let a=[1,2,3];
let b=a;
document.write(a==b); //=>ture
b[0]=2;
document.write(a==b); //=>ture
document.write(a,b); //=>[2,2,3],[2,2,3]
深拷贝&浅拷贝
浅拷贝发生的原因是仅复制了引用,彼此之间的操作会互相影响,并没有在堆中重新分配内存。
深度拷贝需要实现在堆中重新分配内存,不同的地址,相同的值,互不影响。
但是要注意number; 需要重新写一篇关于number的
深拷贝的实现方法
方法一:递归&for循环
对属性中所有引用类型的值进行遍历并递归,直到是基本类型值为止。
简单示例:对于简单的对象类型
let arr1=[1,2,3];let arr2=[];for(let i of arr1)
arr2.push(i);
console.log(arr1,arr2);//=>[1,2,3],[1,2,3]
arr2[0]=2;
console.log(arr1,arr2);//=>[1,2,3],[2,2,3]