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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理