对象拷贝语法:$.extend([deep],target,object1,[objectN])
1.deep:如果设为true为深拷贝,默认为false 浅拷贝
2.target:要拷贝的目标对象
3.object:待拷贝到第一个对象的对象
4.objectN:待拷贝到第N个对象的对象
(5.浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象)
(6.深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址,会申请一个新的内存),修改目标对象不会影响被拷贝对象)
$(function() {
var targetObj = {
id: 0,
msg: {
sex: '男'
}
};
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
}
};
//浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
// $.extend(targetObj, obj); //会覆盖targetObj里面原来的数据
// console.log(targetObj);
// //浅拷贝哪一个修改了数据,都会受到影响
// targetObj.msg.age = 20;
// console.log(obj);
//深拷贝把里面的数据完全复制一份给目标对象,如果里面有不冲突的属性,会合并到一起
$.extend(true, targetObj, obj); //会覆盖targetObj里面原来的数据
console.log(targetObj);
//浅拷贝哪一个修改了数据,都会受到影响
targetObj.msg.age = 20;
console.log(obj);
})
图解:浅拷贝
图解:深拷贝
PS:图片引用于pink老师的教程