平时知识简单的照例使用api, 并没有参透深浅拷贝的异同, 所以有意总结一下.

前言


关于深浅拷贝, Bing了很多篇blog, 基本都是千篇一律的如何实现, 并没有用通俗的语言描述出来, 对此, 有以下记录

记录


浅拷贝

shallowClone

Forward Result
数组 拷贝整个数组
对象 只对Object.keys()进行拷贝

深拷贝

deepClone

解决浅拷贝拷贝对象的时候, 对象中存在深层的嵌套对象的问题. 例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
const obj = {
b: 1,
c: 2,
d: {
e: 3,
f: [],
g: {
h: {
...
},
},
},
};

这时, 使用浅拷贝会出现意想不到的情况 —— d键的地址会被clone. 而深拷贝则能解决这个问题.