js-深拷贝
简介
一.为什么需要深拷贝
js中数据类型分基本数据类型和引用数据类型,基本数据类型存放在栈内存,引用数据类型存放在堆内存,在栈内存中只存放一个指针,指向堆内存中的引用。浅拷贝只是拷贝了指针,修改数据会影响源数据。如果不想改变源数据就需要深拷贝。
二.深拷贝方法
1.JSON.parse, JSON.stringify
这种方法无法拷贝值为undefined、function、regexp类型的属性
| 1 | let obj2 = JSON.parse(JSON.stringify(obj1)) | 
2.Object.assign()
这种方法只能对只有一个层级的对象(所有属性的值都是基础数据类型)深拷贝
| 1 | Object.assign({}, obj1, obj2, obj3) | 
3.递归
| 1 | function deepClone(obj) { | 
