简单理解浅拷贝和深拷贝

浅拷贝

//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

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

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

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

发布了9 篇原创文章 · 获赞 3 · 访问量 1034

猜你喜欢

转载自blog.csdn.net/m0_38102288/article/details/103051115