深拷贝和浅拷贝
2022-04-15
次访问
浅拷贝
只复制引用,而未复制真正的值
1 | const originArray = [1,2,3,4,5]; |
深拷贝
深拷贝就是对目标的完全拷贝,不像浅拷贝那样只是复制了一层引用,就连值也都复制了。只要进行了深拷贝,它们老死不相往来,谁也不会影响谁。
实现深拷贝的两种方法
JSON.stringify/parse的方法
如果对象含有一个函数时,不能用这个方法进行深拷贝,因为undefine、function、symbol会在转换过程中被忽略
1 | const originArray = [1,2,3,4,5]; |
递归的方法
1 | function deepClone(source){ |
总结
- 赋值运算符 = 实现的是浅拷贝,只拷贝对象的引用值;
- JavaScript 中数组和对象自带的拷贝方法都是“首层浅拷贝”;
- JSON.stringify 实现的是深拷贝,但是对目标对象有要求;
- 若想真正意义上的深拷贝,请递归。
