首页 > Web开发 > 详细

WebForm——浅拷贝与深拷贝

时间:2019-07-04 09:09:31      阅读:87      评论:0      收藏:0      [点我收藏+]

注:本文整理来自连接 https://www.cnblogs.com/echolun/p/7889848.html ,感谢博主的分享

总结:

1、浅拷贝:只拷贝变量的名,而不拷贝变量的值——常为引用类型,变量的值为一个路径,路径不变,指向的永远是同一个值,不管值是否改变

深拷贝:既拷贝变量的名,同时拷贝变量的值——常为引用类型

2、一个简单而又行之有效的深拷贝方法(借助类型转换):

var B = A;
B = JSON.stringify(B);
B = JSON.parse(B);

 

a.基本类型--名值存储在栈内存中,例如let a=1;

技术分享图片

当你b=a复制时,栈内存会新开辟一个内存,例如这样:

 技术分享图片

b.引用数据类型--名存在栈内存中,值存在于堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值

技术分享图片

当b=a进行拷贝时,其实复制的是a的引用地址,而并非堆里面的值。

技术分享图片

而当我们a[0]=1时进行数组修改时,由于a与b指向的是同一个地址,所以自然b也受了影响,这就是所谓的浅拷贝了。

 技术分享图片

那,要是在堆内存中也开辟一个新的内存专门为b存放值,就像基本类型那样,岂不就达到深拷贝的效果了

技术分享图片

WebForm——浅拷贝与深拷贝

原文:https://www.cnblogs.com/qq450867541/p/11130152.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!