js中深拷贝,浅拷贝
1.浅拷贝:拷贝的是这个对象的引用,这个对象的任何变化都会反映在原有对象上
const obj1 = {a: {b: 1}};
const obj2 = Object.assign({}, obj1);
obj1.a.b = 2;
obj2.a.b // 2
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)