构建大型应用的秘诀就是不构建大型应用,当你引入一个UI库,js库,或者一个框架的时候,你应该想到,能不能轻易的替换掉。所有的工具都是为了方便而存在,而不是绑定。
angular.toJson
Object
转化Json
功能等同于 JSON.stringify
angular.fromJson
Json
转Object
功能等同于JSON.parse
讲真的,这个命名好不清晰,且原生的已经具备了,以后的新的框架再也不会出现这种东西
angular.forEach
遍历,第一个参数是需要加工的对象(或者数组),第二个是函数
函数接受三个参数,参数跟原生的forEach并无区别,(原生不支持obj,只能对数组处理)
不会迭代继承的属性(用hasOwnProperty筛选。)
angular.forEach(obj,function(e,index,self){
console.log(e,index,self) // 键值,属性名,传入的对象
})
angular.extend
他执行了 对象扩展,深拷贝,混入(mixin)。。。叫法挺多的
但是混入一个词比较贴切吧,You-Dont-Know-JS是这样形容的:像蛋糕上面涂奶油一样
第一个参数是扩展对象,后面的是n多混入对象
var data = {name: 0}
angular.extend(data,{p:0},{k: 0})
Object {name: 0, p: 0, k: 0}
angular.copy
这个是深拷贝,楼上的那个代码是混入,但是还是很多人叫深拷贝。
接受一个对象参数,返回对象
功能单纯
深入拷贝,递归实现,可对属性的对象再次深拷贝,看代码
var c = {name: 0}
,a = { name: c }
,b = angular.copy(a)
c.name = 'no number 0'
console.log(b.name.name)
angular.equals
对两个值比较,if 相同 true
, else: false
支持类型,正则,表达式
NaN 也会通过,里面有这样一段源码:
if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
angular.element
将字符串,或者Dom转化Jq元素
--OK--
推荐一本书:
https://github.com/getify/You-Dont-Know-JS
--END--