深拷贝(JSON.parse(JSON.stringify( )))与浅拷贝区别

什么时候用到?

复杂类型/引用类型(object,array,data等),复杂类型的值保存在堆空间中,所以要对复杂类型里的值进行复制时,需要用到深拷贝。
简单类型/值类型 (String、number、Boolean、undefined、null),值类型保存在栈内存中,浅拷贝即可。

深拷贝例子

let obj = {
    num: 1,
    name: '22',
}
let obj2 = JSON.parse(JSON.stringify(obj))
obj2.num = 23;
// 地址引向
console.log('obj2' + obj2.num); //num=23
console.log('obj' + obj.num); //num =1

深拷贝错误例子

let obj = {
    num: 1,
    name: '22',
}
let obj2
obj2 = obj;
obj2.num = 23;//这里将obj堆内存中的num更改了,所以obj2也是23
// 地址引向
console.log('obj2' + obj2.num); //num=23
console.log('obj' + obj.num); //num =23

浅拷贝例子

let obj = {
    num: 1,
    name: '22',
}
let obj2 = obj
obj2.name = '对对对';
console.log(obj) // {name:'对对对',num:1}
console.log(obj2) // {name:'对对对',num:1}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值