AngularJS API Docs – Global APIs
此文章的 API 参考 Version 1.4.7.
angular.forEach: 迭代函数
用法:
angular.forEach(obj, iterator, [context])
解释: obj 为迭代对象, 可以是一个 object, 也可以是 array, 根据 obj 的类型, 迭代函数iterator的参数理解稍微不同(详见示例), contenxt 可选参数, 是iterator
执行的上下文.注意:
angular.forEach
不迭代继承的属性, 因为内部使用了hasOwnProperty
方法来过滤与
Array.prototype.forEach
不同, 当 obj 为不可迭代对象时, 比如 undefined, null, number,angular.forEach
返回 obj 本身, iterator并不会执行
示例:
var person = {name: "Jerry", gender: "male"};
var result = [];
angular.forEach(person, function (value, key, obj) {
this.push(key + ": " + value);
}, result);
$log.debug(result); // ["name: Jerry", "gender: male"]
var friends = ["Tom", "Jerry", "Donald"];
angular.forEach(friends, function (value, index, arr) {
this.push(index + ": " + value);
}, result);
$log.debug(result); // ["name: Jerry", "gender: male", "0: Tom", "1: Jerry", "2: Donald"]
$log.debug(angular.forEach(undefined)); // undefined
$log.debug(angular.forEach(null)); // null
$log.debug(angular.forEach(1, function (){ $log.debug("in iterator")})); // 1
angular.extend
功能: 扩展函数, 将src(s)的可枚举属性复制到dst中;
用法:
angular.extend(dst, src...);
注意
如果不想保留原有的 obj 不被改变, 可以使用
{}
作为第一个参数:var obj = angular.extend({}, obj1, obj2)
angular.extend
不支持递归merge(deep copy), 如果需要需要使用angular.merge
示例
var obj1 = {name: "Jerry"};
var obj2 = {gender: "male"};
var obj3 = {phone: "13312345678"};
angular.extend(obj1, obj2, obj3);
$log.debug(obj1); // {gender: "male", name: "Jerry", phone:"13312345678"}
angular.merge
功能: 扩展函数, 深度拷贝
用法:
angular.extend(dst, src...);
与angular.extend
使用方法一致注意: 在1.3.0版本中无此功能
angular.noop
功能: 啥都不干的函数
用法:
function foo(callback) {
var result = calculateResult();
(callback || angular.noop)(result);
}
angular.identity
功能: 返回第一个参数
用法:
function transformer(transformationFn, value) {
return (transformationFn || angular.identity)(value);
};
angular.copy
用法:
angular.copy(source, [dest])
详解: !!此 API 的实践效果与官方的有效出入.
首先清空 dest(如果dest是一个object, array, 否则不修改),
然后生成
source
的一个深拷贝, 并将深拷贝复制到 dest 中(如果 dest 是一个object, array且 source 与 dest 数据结构相同, 否则 dest 不做修改)返回 dest
注意
如果没有
destination
参数, 那么source的深拷贝将被创建, 且返回如果 source 和 destination 相同, 那么抛出一个错误
angular.equals(o1, o2)
功能: 比较o1, o2是否相等, 包括: obj, arr, primitives, regExp,
详解:
满足以下条件 angular.equals 返回 true
满足 ===
obj 属性或者 array 的元素递归满足 angular.equals == true
angular.equals(NaN, NaN) === true
字面量相等的 regExp 相等
带 $ 的属性和 function 将会被忽略, 但是只比较两个匿名函数会返回 false
scope, DOM 只能按照 === 去判断
angular.bind(self, fn, args)
功能: function.bind 与 偏函数的结合
示例: what is the use of angular.bind in angularjs? Where to use it?
var greet = function (greeting, punctuation) {
return greeting + ' ' + this.user + punctuation;
};
var object = { 'user': 'fred' };
var bound = angular.bind(greet, object, 'hi');
bound('!'); // → 'hi fred!'
angular.toJson
用法: angular.toJson(obj, [pretty])
功能: 将 obj 按照 json 的格式输出
解释: 如果 pretty 设置, pretty=true <=> pretty=2, 即缩进的空格个数
angular.bootstrap
功能: 手动启动一个 angular 的应用, 此乃高级内容, 暂做简要记录, 还须深入理解
用法:
angular.bootstrap(element, [modules], [config])
示例:
<!doctype html>
<html>
<body>
<div ng-controller="WelcomeController">
{{greeting}}
</div>
<script src="angular.js"></script>
<script>
var app = angular.module('demo', [])
.controller('WelcomeController', function ($scope) {
$scope.greeting = 'Welcome!';
});
setInterval(function () {
angular.bootstrap(document, ['demo']);
}, 2000);
</script>
</body>
</html>
angular.element: 包裹 DOM 元素作为一个 jQuery(jqLite) 的元素
详解: angular 中的 element 都是 jQuery(jqLite)元素; jqLite 的使用将会在另外的文章中给出介绍
angular.module
用法:
angular.module(name, [requires], [configFn])
功能: 用来创建, 注册, 获得 angular 的 module
注意:
传入一个参数为获取, 传入多个参数为创建
其他
angular.lowercase: 字符串转小写
angular.uppercase: 字符串转大写
angular.isUndefined
angular.isDefined
angular.isObject
功能: 判断参数是否是一个 object 但是不是 null, 注意 array 是 object
angular.isString
angular.isNumber
angular.isDate
angular.isArray
angular.isFunction
angular.isElement
功能: 判断参数是否是一个 DOM 元素或者一个 jQuery 包裹的元素
angular.reloadWithDebugInfo: 重启应用, 打开 debug
angular.injector, 高级内容, 未来深入理解
angular.fromJson