1、如果只是一层数组或是对象,其元素只是简单类型的元素,那么属于深拷贝(就是一层拷贝,暂时就理解为深拷贝吧!!!!)

let aa = {
age: 18,
name: 'aaa'
}

let bb = {...aa};
bb.age = 22;

console.log(aa.age); // 18

2、如果数组或对象中的元素是引用类型的元素,那么就是浅拷贝

let aa = {
age: 18,
name: 'aaa',
address: {
    city: 'shanghai'
}
}

let bb = {...aa};
bb.address.city = 'shenzhen';

console.log(aa.address.city);  // shenzhen

3、如何使得深拷贝

let aa = {
    age: 18,
    name: 'aaa',
    address: {
        city: 'shanghai'
    }
}

let bb = {
    ...aa,
    address: {...aa.address}
};

bb.address.city = 'shenzhen';

console.log(aa.address.city);  // shanghai

或者利用JSON.parse(JSON.stringfy(xxx))来实现深拷贝
注意:JSON.parse(JSON.stringfy(xxx))的方法,如果变量中含有Promise对象,则不可以使用该方法


我在神游
18 声望3 粉丝