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) { |