东莞网站定制开发,wordpress 文章列表 分页,代运营服务公司,深网网络网站之前一直觉得Ext.apply,Ext.clone,Ext.Object.merge这三个方法都差不多#xff0c;但是今天仔细看了一下#xff0c;有些区别如下#xff1a;
#xff11;#xff0e;apply#xff08;b, a#xff09;方法是把a对象的所有属性都复制给 b 对象#xff0c;如果属性有相… 之前一直觉得Ext.apply,Ext.clone,Ext.Object.merge这三个方法都差不多但是今天仔细看了一下有些区别如下
applyb, a方法是把a对象的所有属性都复制给 b 对象如果属性有相同的就覆盖对象中的属性值另外一个applyIf()类似
于apply的方法不会覆盖而且a对象第一层的属性的改变不影响b 对象的第一层的属性但是对象里面嵌套的对象的属性的改变就会影响到b的 var a{a:a,b:b,c:{c:c}}
var b{e:e}
Ext.apply(b,a)
b.c.caa
console.log(a) 输出: {a:a,b:b,c:{c:aa}} 的值改变了因为里面嵌套的对象的属性值改变了 Ext.Object.merge可以解决上面的apply的问题中嵌套的对象的属性值的改变不会影响的属性值
上面的两个方法只局限于对象对于数组不可行
var b Ext.clone(a) 是把a的所有东西都克隆出一份给而且的属性值的改变不会影响到但是clone这个方法可用于对象
和数组如下: var a[1,2,3]var bExt.clone(a)
delete a[1]
console.log(b) 输出 [1,2,3]