深拷贝与浅拷贝的区别

核心区别

  • 浅拷贝仅复制对象的第一层属性(基本类型复制值,引用类型复制地址),导致新旧对象共享嵌套引用。
  • 深拷贝递归复制所有层级属性,生成完全独立的新对象,修改互不影响‌。

实现方式

  1. 浅拷贝‌:
    • Object.assign():复制源对象自身可枚举属性到新对象。‌
    • 展开运算符 ...:快速创建新对象,属性为引用类型时共享内存。‌
    • 数组方法:如 slice() 或 concat(),复制元素但嵌套结构共享。‌
  2. 深拷贝‌:
    • 递归复制:遍历对象属性,对引用类型递归创建新副本。‌
    • JSON.parse(JSON.stringify()):序列化后反序列化生成新对象,但无法处理函数、正则等特殊类型。‌
    • 第三方库:如 Lodash 的 _.cloneDeep() 或 Python 的 copy.deepcopy()。‌

关键区别

维度浅拷贝深拷贝
内存共享嵌套对象共享内存,修改相互影响‌完全独立,修改互不影响‌
性能内存开销小,仅复制顶层结构‌内存开销大,递归复制所有层级‌
适用场景对象结构简单、嵌套无需修改或需共享引用时‌需完全隔离副本或嵌套结构复杂时‌

应用场景

  • 浅拷贝‌:临时数据处理、性能敏感场景(如大型列表切片)
  • 深拷贝‌:配置备份、测试数据隔离或避免共享引用导致的意外修改。‌
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值