深拷贝与浅拷贝
因为复制前后的obj指向了堆内存中的同一个对象。因而在浅拷贝时,两个obj直接的变化会相互影响。
①当遇到多层数据时会失效
1.扩展运算符(...)
let a=[1,2,[3,9]];
let b=[...a];
console.log(a,b);
a[0]=7;
a[2][0]=8;
2.Object.assign()
let a=[1,2,[3,9]];
let b=Object.assign([],a);
3.json对象
obj1={a:0,b:{c:0}};
let obj3=JSON.parse(JSON.stringify(obj1));
obj1.a=4;
obj1.b.c=4;
console.log(JSON.stringify(obj3));
- 任意层数在复制后都不会受影响