我們先學習一下ng一些內建的工具方法:
angular.equals:
(1)兩個引數滿足===比較返回true;(2)兩個引數是同一種型別,同時他們的每乙個屬性通過angular.equals都是返回true;(3)兩個都是nan(在js中雖然nan==nan為false,但是這裡為true);(4)兩個物件代表同乙個正規表示式,如/abc/==/abc/(雖然在js中返回false)
function equals(o1, o2)
};var self = ;
//var bindfn = angular.bind(self, obj.print, 'china');
var bindfn = angular.bind(self, obj.print, ['china']);
bindfn(); //$ yyy is form china
其實這個函式內部實現機制不用說肯定是如下的方式:
function bind(fn,context)
}
不過,這個函式有一點不同的是,其
bind如果傳入多於兩個引數其第三個引數可以傳入乙個陣列或者逐個引數傳遞,下面展示的是ng內部提供的bind函式原始碼:
angular.extend(dst, src):function bind(self, fn)
: function() ;
} else
}
function bind(fn,context)
}function test(name,***)
var obj=;
var func=bind(test,obj,['name','***']);
//這時候outerargs的值為[['name','***']]
func();
用於擴充套件dst物件,把src中可以列舉的屬性全部封裝到dst物件上面。你可以指定多個src物件用於擴充套件dst物件,當然你也可以指定目標物件為乙個空物件,var object = angular.extend({}, object1, object2)。注意:
這個方法不支援深度轉殖
var dst = };
var src = };
angular.extend(dst, src);
console.log(src); //$ object
console.log(dst); //$ object
從這個例子中,我們可以清楚的看到,對於school屬性來說都是乙個物件,而後面的物件會直接覆蓋前面的物件,而
jquery.extend是可以實現深度轉殖的。我們看看其中的原始碼:
function extend(dst) );
}});
sethashkey(dst,h);
return dst;
}
angular.foreach:
var obj = ;
angular.foreach(obj, function (value, key) );
//$ name:***
//$ country:china
var array = ['***', 'yyy'];
angular.foreach(array, function (item, index) , obj);
這個方法和jquery的$.each方法具有相似的簽名,這個方法如果傳入了第三個引數就是繫結了函式中的this指向
angular.fromjson(string):
var json = angular.fromjson('');
console.log(json); //$ object
其內部還是使用的json.parse來完成的:
function fromjson(json)
angular.tojson(json,pretty):
用於把乙個json物件轉化為json字串,其內部還是使用了json.stringify完成的,第二個引數表示是否美化輸出字串
function tojson(obj, pretty)
用法如下:
angular.tojson();
//$""
angular.tojson(,true);
//$ ""
angular.tojson(,10);
//$ ""
angular.identity(value)
返回這個函式的第乙個引數
function identity($)
使用方式如下:
console.log(angular.identity('***','yyy')); //$ ***
angular.isarray:
var isarray = (function() ;
} return array.isarray;
})();
用於判斷引數是否為乙個陣列
angular.isdate:
function isdate(value)
angualr.isdefined:
function isdefined(value)//是否被宣告過
angular.isundefined:
function isundefined(value)
angular.isfunction:
function isfunction(value)
angular.isnumber
function isnumber(value)
注意:這時候isnumber(number(2))返回true,因為number相當於轉化,而isnumber(new number(3))返回false,因為後者返回object
angular.isoject
function isobject(value)
注意:這時候null不再是返回'object'型別了,同時isobject(function(){})也是返回false,因為其typeof返回'function'
angular.isstring:
function isstring(value)
這個方法只能用於判斷是否是基本資料型別
angular.lowercase:
var lowercase = function(string);
注意:這個方法只能處理string型別,其它型別原樣返回
angular.uppercase:
var uppercase = function(string);
注意:這個方法也是只會處理string型別的
angular.loop:
function noop() {}
就是返回乙個空函式
angular.element:
如果jquery物件存在,那麼angular.element就是jquery函式的別名,如果jquery不存在那麼angular.element就會使用angular內建的jquery子集『jquery lite』或者'jqlite'
angularJs的工具方法
返回true 支援判斷jq獲取到的物件 判斷兩個引數是否相等 var a 2 var b 2 console.log angular.equals a,b true var c var d console.log angular.equals c,d true var c 1,2 var d 1 c...
angularjs學習筆記 工具方法
返回值 this指向self的新函式 var obj var self var bindfn angular.bind self,obj.print,china var bindfn angular.bind self,obj.print,china obj.print american is fo...
Angular JS 中的內建方法之 watch
watchfn angular表示式或函式的字串 watchaction newvalue,oldvalue,scope watchfn發生變化會被呼叫 deepwatch 可選的布林值 檢查被監控的物件的每個屬性是否發生變化 watch會返回乙個函式,想要登出這個watch可以使用函式 例如,實現...