此文章的 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