浅复制(浅拷贝)是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。
深复制(深拷贝)是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型字段发生改变,不会引起原始对象中的字段发生改变
var obj1 = {
a:"aa",
b:"bb"
}
var obj2 = JSON.parse(JSON.stringify(obj1);
obj2.a = "cc";
console.log(obj1.a); //aa
console.log(obj2.a); //cc
这样相当于深拷贝,改变后者的值,前者的值不受影响。
var obj1 = {
a:"aa",
b:"bb"
}
var obj2 = obj1;
obj2.a = "cc";
console.log(obj1.a); //cc
console.log(obj2.a); //cc
这样,相当于浅拷贝,改变后者,会影响前者的值