此文章的 API 参考 Version 1.4.7.html
用法: angular.forEach(obj, iterator, [context])
angularjs
解释: obj 为迭代对象, 能够是一个 object, 也能够是 array, 根据 obj 的类型, 迭代函数iterator的参数理解稍微不一样(详见示例), contenxt 可选参数, 是iterator
执行的上下文.json
注意:bootstrap
angular.forEach
不迭代继承的属性, 由于内部使用了hasOwnProperty
方法来过滤api
与Array.prototype.forEach
不一样, 当 obj 为不可迭代对象时, 好比 undefined, null, number, angular.forEach
返回 obj 自己, iterator并不会执行数据结构
示例:app
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
功能: 扩展函数, 将src(s)的可枚举属性复制到dst中;ide
用法: angular.extend(dst, src...);
函数
注意oop
若是不想保留原有的 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.extend(dst, src...);
与angular.extend
使用方法一致
注意: 在1.3.0版本中无此功能
功能: 啥都不干的函数
用法:
function foo(callback) { var result = calculateResult(); (callback || angular.noop)(result); }
功能: 返回第一个参数
用法:
function transformer(transformationFn, value) { return (transformationFn || angular.identity)(value); };
用法: angular.copy(source, [dest])
详解: !!此 API 的实践效果与官方的有效出入.
首先清空 dest(若是dest是一个object, array, 不然不修改),
而后生成 source
的一个深拷贝, 并将深拷贝复制到 dest 中(若是 dest 是一个object, array且 source 与 dest 数据结构相同, 不然 dest 不作修改)
返回 dest
注意
若是没有destination
参数, 那么source的深拷贝将被建立, 且返回
若是 source 和 destination 相同, 那么抛出一个错误
功能: 比较o1, o2是否相等, 包括: obj, arr, primitives, regExp,
详解:
知足如下条件 angular.equals 返回 true
知足 ===
obj 属性或者 array 的元素递归知足 angular.equals == true
angular.equals(NaN, NaN) === true
字面量相等的 regExp 相等
带 $ 的属性和 function 将会被忽略, 可是只比较两个匿名函数会返回 false
scope, DOM 只能按照 === 去判断
功能: 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(obj, [pretty])
功能: 将 obj 按照 json 的格式输出
解释: 若是 pretty 设置, pretty=true <=> pretty=2, 即缩进的空格个数
功能: 手动启动一个 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 都是 jQuery(jqLite)元素; jqLite 的使用将会在另外的文章中给出介绍
用法: 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