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)
原文地址:https://www.cnblogs.com/huanhuan55/p/12331420.html