关于javascript:对象的扩展运算符深拷贝还是浅拷贝

15次阅读

共计 558 个字符,预计需要花费 2 分钟才能阅读完成。

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 对象,则不能够应用该办法

正文完
 0