1.浅拷贝:拷贝的是这个对象的引用,这个对象的任何变化都会反映在原有对象上
const obj1 = {a: {b: 1}};
const obj2 = Object.assign({}, obj1);
obj1.a.b = 2;
obj2.a.b
2.深拷贝
第一种:
let obj1 = {
a: 1,
b: {
c:2
}
}
let obj2 = JSON.parse(JSON.stringify(obj1));
console.log(obj2);
第二种:
const obj = {
name: 'ha',
age: 10
}
const obj2 = {
obj: {
...obj
}
}
第三中 递归实现深拷贝
function deepClonne(attr){
let obj;
if(attr instanceof Object){
if(Array.inArray(attr)){
obj = []
}else{
obj ={}
}
for(let key in attr){
obj[key] = deepClone(attr[key])
}
return obj
}else{
return attr
}
}
let obj1 = {name:"李四",age:18}
使用: let obj2 = deepClone(obj1)