構(gòu)建大型應(yīng)用的秘訣就是不構(gòu)建大型應(yīng)用,當(dāng)你引入一個(gè)UI庫马绝,js庫豆赏,或者一個(gè)框架的時(shí)候,你應(yīng)該想到迹淌,能不能輕易的替換掉河绽。所有的工具都是為了方便而存在,而不是綁定唉窃。
angular.toJson
Object
轉(zhuǎn)化Json
功能等同于 JSON.stringify
angular.fromJson
Json
轉(zhuǎn)Object
功能等同于JSON.parse
講真的耙饰,這個(gè)命名好不清晰,且原生的已經(jīng)具備了,以后的新的框架再也不會(huì)出現(xiàn)這種東西
angular.forEach
遍歷纹份,第一個(gè)參數(shù)是需要加工的對象(或者數(shù)組)苟跪,第二個(gè)是函數(shù)
函數(shù)接受三個(gè)參數(shù),參數(shù)跟原生的forEach并無區(qū)別,(原生不支持obj,只能對數(shù)組處理)
不會(huì)迭代繼承的屬性(用hasOwnProperty篩選蔓涧。)
angular.forEach(obj,function(e,index,self){
console.log(e,index,self) // 鍵值件已,屬性名,傳入的對象
})
angular.extend
他執(zhí)行了 對象擴(kuò)展元暴,深拷貝篷扩,混入(mixin)。茉盏。鉴未。叫法挺多的
但是混入一個(gè)詞比較貼切吧,You-Dont-Know-JS是這樣形容的:像蛋糕上面涂奶油一樣
第一個(gè)參數(shù)是擴(kuò)展對象鸠姨,后面的是n多混入對象
var data = {name: 0}
angular.extend(data,{p:0},{k: 0})
Object {name: 0, p: 0, k: 0}
angular.copy
這個(gè)是深拷貝铜秆,樓上的那個(gè)代碼是混入,但是還是很多人叫深拷貝讶迁。
接受一個(gè)對象參數(shù)连茧,返回對象
功能單純
深入拷貝,遞歸實(shí)現(xiàn),可對屬性的對象再次深拷貝啸驯,看代碼
var c = {name: 0}
,a = { name: c }
,b = angular.copy(a)
c.name = 'no number 0'
console.log(b.name.name)
angular.equals
對兩個(gè)值比較客扎,if 相同 true
, else: false
支持類型罚斗,正則虐唠,表達(dá)式
NaN 也會(huì)通過,里面有這樣一段源碼:
if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
angular.element
將字符串惰聂,或者Dom轉(zhuǎn)化Jq元素
--OK--
推薦一本書:
https://github.com/getify/You-Dont-Know-JS
--END--