JS 常用深拷贝方法总结

拷贝:其实就是一个对象复制给另外一整个对象,让对象相互不影响。

所谓的浅拷贝,只是拷贝了基本类型的数据,对于引用的类型数据,复制后也是会发生引用,这种拷贝就叫做浅拷贝

浅拷贝和深拷贝之间的区别

假设A复制了B,B发生了改变,A也跟着改变,就是浅拷贝,如果A没有变化,那就是深拷贝(深拷贝本质是两者数据的内存地址完全不同)

深拷贝常用方法:

1. Object.assign(target, ...sources)

Object.assign() 是ES6新增方法,也可以用于对象的合并。

但是在进行拷贝对象时,当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝。

但是需要注意的是,当对象中有对象或数组复杂类型数据时,此方法,在二级属性以后就是浅拷贝,即为引用数据类型。

2. 通过 JSON 对象实现深拷贝

先将对象转成字符串,再转成 JSON,但是这个方法只有可以转成 JSON 格式的对象才可以这样用,像 function 无法转成 JSON,RegExp 对象也是无法通过这种方式深拷贝。

// 语法--
let deepObj = JSON.parse(JSON.stringify(obj))

// demo--
const obj1 = { a : 1, b : 2}
const obj2 = JSON.parse(JS
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值