对象的扩展运算符(...)深拷贝还是浅拷贝
Posted 我在神游
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的扩展运算符(...)深拷贝还是浅拷贝相关的知识,希望对你有一定的参考价值。
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对象,则不可以使用该方法
以上是关于对象的扩展运算符(...)深拷贝还是浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章