核心区别
- 浅拷贝仅复制对象的第一层属性(基本类型复制值,引用类型复制地址),导致新旧对象共享嵌套引用。
- 深拷贝递归复制所有层级属性,生成完全独立的新对象,修改互不影响。
实现方式
- 浅拷贝:
Object.assign():复制源对象自身可枚举属性到新对象。- 展开运算符
...:快速创建新对象,属性为引用类型时共享内存。 - 数组方法:如
slice()或concat(),复制元素但嵌套结构共享。
- 深拷贝:
- 递归复制:遍历对象属性,对引用类型递归创建新副本。
JSON.parse(JSON.stringify()):序列化后反序列化生成新对象,但无法处理函数、正则等特殊类型。- 第三方库:如 Lodash 的
_.cloneDeep()或 Python 的copy.deepcopy()。
关键区别
| 维度 | 浅拷贝 | 深拷贝 |
|---|---|---|
| 内存共享 | 嵌套对象共享内存,修改相互影响 | 完全独立,修改互不影响 |
| 性能 | 内存开销小,仅复制顶层结构 | 内存开销大,递归复制所有层级 |
| 适用场景 | 对象结构简单、嵌套无需修改或需共享引用时 | 需完全隔离副本或嵌套结构复杂时 |
应用场景
- 浅拷贝:临时数据处理、性能敏感场景(如大型列表切片)
- 深拷贝:配置备份、测试数据隔离或避免共享引用导致的意外修改。
1110

被折叠的 条评论
为什么被折叠?



