js的深拷贝与浅拷贝
理解这个之前我们需要对js的数据类型,堆内存和栈内存做好充分的理解
深拷贝与浅拷贝的概念:
深拷贝可以理解为指向两个不同的内存地址
浅拷贝可以理解为指向同一个内存地址
下面是一个浅拷贝的例子:
数组的浅拷贝:
var arr=[1,2,3],arr1=[];
arr1=arr;
arr1[0]=0;
console.log(arr)=> [0, 2, 3];
对象的浅拷贝:
var obj={a:1};
var obj1=obj;
obj1.b=2;
console.loh(obj)=>{a: 1, b: 2}
数组实现深拷贝的一些方法
1.concat()
2.slice()
3.es6的扩展运算符
4.遍历复制
对象实现深拷贝的一些方法
- JSON.parse(JSON.stringify())
- 递归方法
- 扩展运算符
- Object.assign()