简单理解浅拷贝和深拷贝

浅拷贝

//A申明了一个引用类型,存储在堆内存
let A = {name:'AAA'};

// ## 这个时候只是把B也指向了A的堆内存
let B = A;


//So,B改变的时候,其实改变的是A和B共存的一块堆内存
B.name = 'BBB';

//最后无论是打印出A还是B,都是一样的
console.log(A.name)//BBB
console.log(B.name)//BBB

深拷贝

//利用JSON.stringify和JSON.parse实现
let A = { name:'AAA' };

//B使用JSON.stringify把关于A下面所有的都拷贝过来了
let B = JSON.stringify(A);
//之后再转换为对象
// ## 这个时候,B相当于重新申请了一块堆内存
B = JSON.prase(B);

// ## 这个时候,B再进行改变的时候,只是改变了B内存里面的name
//相应的A内存里面的name并不会改变
B.name = 'BBB';


console.log(A.name)//AAA
console.log(B.name)//BBB

## 浅拷贝只是两个对象同时指向了一块内存

## 深拷贝则是分开了两个内存,两个内存的值改变互不影响

最后附上原文链接:传送门

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值