一.定义:
浅拷贝:顾名思义,浅尝辄止,当引用数据类型被复制后,得到一个新的对象,这时候改变原来的对象,新对象的对应的值也会改变。
深拷贝:当引用数据类型被复制后,得到一个新的对象,这时候改变原来的对象,新对象的对应的值不会改变。
Object.assign()属于深拷贝还是浅拷贝。答案是浅拷贝,原因是当你的对象里面有对象时,修改原来对象里面对象的值,新对象的相应对象里面的值会改变
二.深拷贝方法
1.JSON.parse(JSON.stringify(obj))
2.写一个浅拷贝+递归的方法:
//把obj1的内容拷贝给obj2
function deepClone(obj1,obj2){
for(var key in obj1){
var item = obj1[key];
if(item instanceof Object){
obj2[key] = {} ;
deepClone(item,obj2[key]);
}else if(item instanceof Array){
obj2[key] = [];
deepClone(item,obj2[key]);
}else{
obj2[key] = item
}
}
}