Javascript中的深拷贝

数组中的深拷贝:

var arr = [1, 2, 3]
var arr2 = [].conact(arr) // 使用conact获取到的是新的数组
var arr3 = arr.slice() // 如果不添加参数那么直接进行深拷贝(复制一摸一样的数组)
var arr4 = Arry.form(arr) // 也是可以直接深拷贝数组
arr = [{a: 1}, {b: 2}]
var arr5 = [...arr] // 使用es6解构赋值的方式也可以实现深拷贝,如果数组内部含有对象等类型(包括数组)则实现的是浅拷贝,因为指向的内存地址相同
var arr6 = JSON.parse(JSON.stringify(arr)) // 使用这种方式就可以实现对象的深拷贝
// 数组还有其他方法 map , filter , reduce 这些也都是会造成浅拷贝的

对象中的深拷贝:

// 也可以使用上述所说的JSON方法
// 对象中如果含有对象的嵌套如:{a: {a: 1}},这样的形式使用Object.assign({}, obj)这种方式拷贝出来的对象也是浅拷贝
// 对象中使用{...obj}这种方法也会造成浅拷贝
var obj = {a: {a: 123}
var obj2 = JSON.parse(JSON.stringify(obj)) // 这种方式可以实现深拷贝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值