AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)

总结一下AngularJS的中心对象angular上的要领,也协助自身进修一下日常平凡工作中没怎么用到的要领,看能不能进步开辟效力。我当前运用的Angularjs版本是1.5.5也是现在最新的稳固版本,不过在全局API上,版本差别也没什么区分。

AngularJS 全局 API列表

  • element

  • bootstrap

  • copy

  • extend

  • merge

  • equals

  • forEach

  • noop

  • bind

  • toJson

  • fromJson

  • identity

  • isUndefined

  • isDefined

  • isString

  • isFunction

  • isObject

  • isNumber

  • isElement

  • isArray

  • version

  • isDate

  • lowercase

  • uppercase

  • module

angular.forEach

forEach(obj, iterator)
遍历obj(可所以对象,也可所以数组)对象,并顺次挪用iterator(value, key, obj)函数。
个中iterator函数,吸收的三个参数分别为

  • value: 对象的属性(数组元素)

  • key: 对象的属性名(数组的索引)

  • obj: 数组(对象)自身

例子:

var list = ['小明', '小毛', '小周', '小蕾'];
angular.forEach(list, function (val, key) {
    console.log(key + '号同砚:' + val);
})

var obj = {
    name: '吴登广',
    age: '21',
    title: 'worker'
}

angular.forEach(obj, function (val, key) {
    console.log(key + ':' + val);
})

结果:《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

angular.module

这个要领人人应当都很熟习了
module(name, requires),name为模块名,requires(可选)为依靠的模块,当有依靠的模块数组的时刻,示意注册一个模块,没偶然为援用一个模块。
例子:

angular.module('main', []);

console.log(angular.module('main'));

结果:《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

angular.element

这个要领是用来操纵DOM的,平常在指令内里运用。
在引入了jquery的状况下,运用要领和jquery险些一样,相当于一个语法糖。

var ele = angular.element('h1');
console.log(ele.html());

在没有引入jquery的状况下,运用的实际上是jqLite(angular自身封装的相似于jquery的一个东西),运用要领也相似,只不过不支持一些jquery的选择器。

var ele = angular.element(document.getElementsByTagName('h1')[0]);
console.log(ele.html());

至于用jqLite猎取到的封装事后的DOM节点和jquery的有点不太一样,这里能够参考一篇文章

angular.bootstrap

这个函数不太经常使用。假如你不想运用ng-app指令来启动angular运用的话,能够用angular.bootstrap()来启动

angular.element(document).ready(function() {
    angular.bootstrap(document, []);
});

须要依靠的模块数组做为参数。

angular.toJson

实在就是挪用JSON.stringify()要领将一个对象或数组,花样化为JSON字符串。

angular.fromJSON

就是挪用JSON.parse()要领将一个JSON字符串转换为一个对象
例子:

var user = {
    name: 'Jax2000',
    age: 21,
    title: 'worker'
}
user = angular.toJson(user)
console.log(user);
user = angular.fromJson(user);
console.log(user);

结果:《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

angular.copy

copy(source, destination)
深复制一个对象或许数组,这是一个异常有用的要领,熟习js的人都应当晓得,js中 = 操纵符,实际上复制的是指针,所以前后两个变量指向的照样内存中的同一个对象,所以我们在个中一个变量上操纵该对象时,对别的一个变量也会见效,偶然刻我们并不愿望涌现这类状况。然后angular.copy要领就是深复制,会在内存中再天生一个对象,两个变量就能够自力,相互不产生影响。
吸收一个必需参数source,和一个可选参数destination

var user1 = {
    name: 'wudengguang',
    age: 21,
    title: 'worker'
}
var user2 = user1;
var user3 = angular.copy(user1);
var user4 = {};

// 注重这个user4必需是一个对象或许数组
angular.copy(user1, user4);
user1.name = 'liulei';
console.log('user1:' + user1.name);
console.log('user2:' + user2.name);
console.log('user3:' + user3.name);
console.log('user4:' + user4.name);

结果:《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

能够看到转变user1的name字段以后,浅复制的user2受到了影响,而深复制的user3和user4没有受到影响

angular.extend

extend(destination, src1, src2…)
这个要领是用来扩大对象的,destination为要扩大的对象,会将背面的对象的属性悉数复制到destination中,不过是浅复制

var user1 = {
    name: 'Jax2000',
    age: 21,
}

var user2 = {
    age: 22,
    skill: {}
}

var dst = {};

angular.extend(dst, user1, user2);

console.log(dst);

console.log(dst.skill === user2.skill);

《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

angular. merge

这个要领和extend要领是一样的,也是用来扩大目的对象的,不过用的是深复制

var user1 = {
    name: 'Jax2000',
    age: 21,
}

var user2 = {
    age: 22,
    skill: {}
}

var dst = {};

angular.merge(dst, user1, user2);

console.log(dst);

console.log(dst.skill === user2.skill);

《AngularJS的中心对象angular上的要领周全剖析(AngularJS全局API)》

merge和extend经常使用于猎取存储在服务端的用户设置,然后须要和当地的连系的这一类案例。假如关于copy,extend,merge的区分还不是很相识的话,能够看这篇文章

angular.equals

equals(o1, o2)
见文知意,推断两个对象或许值是不是相称,个中对象只如果属性都想同即可。

var user1 = {
    name: 'Jax2000',
    age: 21,
}

var user2 = {
    age: 21,
    name: 'Jax2000'
}

console.log(angular.equals(user1, user2));

结果是true

angular.noop

这个要领直接看源代码就晓得了

function noop() {}

我也不是很清晰,这个东西干吗的,多是有些函数须要回调函数做为参数,在没偶然挪用的吧,官方的文档案例:

function foo(callback) {
    var result = calculateResult();
    (callback || angular.noop)(result);
}

angular.bind

这个要领就是返回一个有特定作用域的函数对象
angular.bind(self, fn, args)
self: 函数的作用域
fn: 须要转变作用域的函数
args: 须要通报给该函数的参数数组

var user1 = {
    name: 'Jax',
    age: 21,
}

var user2 = {
    age: 21,
    name: 'Scarlett'
}

function sayName(user) {
    console.log(this.name, user.name);
}

 var _sayName = angular.bind(user1, sayName, user2);

_sayName();

结果就是打印出了 Jax Scarlett

angular.identity

该函数也很简单,就是返回这个函数吸收到的第一个参数
例子也用官方的例子好了

function getResult(fn, input) {
    return (fn || angular.identity)(input);
};

getResult(function(n) { return n * 2; }, 21);   // returns 42
getResult(null, 21);                            // returns 21
getResult(undefined, 21);                       // returns 21

angular.isUndefined

推断传入的参数是不是为undefined

console.log(angular.isUndefined(undefined)); // true
console.log(angular.isUndefined(null)); // false

angular.isDefined

推断传入进来的参数是不是不是undefined

console.log(angular.isDefined(undefined)); // false
console.log(angular.isDefined(null)); // true

angular.isString

推断传入进来的参数是不是为字符串

console.log(angular.isString('123')); // true
console.log(angular.isString(123)); // false

angular.isNumber

推断传进来的参数是不是为number范例

console.log(angular.isNumber('123')); // false
console.log(angular.isNumber(123)); // true

angular.isFunction

推断通报进来的参数是不是为一个函数

console.log(angular.isFunction(fn)); // true
console.log(angular.isFunction(fn())); // false

angular.isObject

推断通报进来的参数是不是为对象(null 除外)

console.log(angular.isObject({})); // true
console.log(angular.isObject(null)); // false
console.log(angular.isObject(123)); // false

angular.isArray

就是Array.isArray
推断传入进来的参数是不是为数组

console.log(angular.isArray([])); // true
console.log(angular.isArray(null)); // false

angular.isElement

推断通报进来的参数是不是为一个DOM节点(被jquery扩大过的也可)

var body = angular.element(document.getElementsByTagName('body')[0]);

console.log(angular.isElement(body)); // true

angular.isDate

推断通报进来的对象是不是为Date范例

console.log(angular.isDate(new Date())); // true

angular.lowercase

将一个字符串转换为小写

angular.upercase

将一个字符串转换为小写

console.log(angular.lowercase('ABCD')); // abcd
console.log(angular.uppercase('abcd')); // ABCD

angular.version

这是一个属性,返回angular的版本

    原文作者:Jax2000
    原文地址: https://segmentfault.com/a/1190000005643605
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞