如果想要把某个对象拷贝(合并)给另一个对象使用,此时可以使用$.extend()方法。
$.extend([deep],target,object1,[objectN]);
1. deep:如果设为 true 为深拷贝,默认为 false 浅拷贝。
2. target:要拷贝的目标对象
3. object1:待拷贝到第一个对象的对象
4. objectN:待拷贝到第N个对象的对象
5. 浅拷贝,是把被拷贝的对象 复杂数据类型中的地址 拷贝给目标对象,修改目标对象 会影响被拷贝对象。
6. 深拷贝,前面加true,完全克隆(拷贝的对象,不是地址),修改目标对象 不会影响被拷贝对象。
$(function(){
var targetObj = {
id:0
};
var obj = {
id:1,
name:"gyl",
msg{
age:18
}
}
$.extend(targetObj,obj);
targetObj.msg.age = 20;
//这里 会改变 obj里的 msg{} 里的 age
//没有 true 浅拷贝把原来对象里的复杂数据类型地址拷贝给目标对象,相同的也直接替换。
$.extend(true,targetObj,obj);
targetObj.msg.age = 20;
//这里 不会改变 obj里的 msg{} 里的 age
//深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起。
})