深拷贝&浅拷贝

深拷贝与浅拷贝

因为复制前后的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));
  • 任意层数在复制后都不会受影响
原文地址:https://www.cnblogs.com/Calculus9/p/14489475.html