$.extend([deep], target, object1, [objectN])
deep: 如果设为true 为深拷贝, 默认为false 浅拷贝target: 要拷贝的目标对象object1:待拷贝到第一个对象的对象。objectN:待拷贝到第N个对象的对象。拷贝对象与被拷贝对象属性名不冲突会合并,
<script> var target={ name:"yang", age:18, msg:{ sex:1 } } var targetnew={ old:"no" }; $.extend(targetnew,target); console.log(targetnew); </script>输出:
浅拷贝的特性: 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象
我们改一下上面的代码:
<script> var target={ name:"yang", age:18, msg:{ sex:1 } } var targetnew={ old:"no" }; $.extend(targetnew,target); console.log(targetnew); target.msg.sex=2; console.log(targetnew); console.log(target); </script>输出: 我们可以看出全部sex全部改成了2:
并且如果要拷贝的对象有与拷贝对象重名的属性,会被覆盖:
var target={ name:"yang", age:18, msg:{ sex:1 } } var targetnew={ age:11 }; $.extend(targetnew,target); console.log(targetnew);输出
1,并且如果要拷贝的对象有与拷贝对象重名的属性,会被覆盖(和浅拷贝一样): 2,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象 3,拷贝对象与被拷贝对象属性名不冲突会合并.