深拷贝和浅拷贝
2018-10-03 18:00:11来源:博客园 阅读 ()
今天,我们来玩一下深拷贝和浅拷贝吧。可以吧,别给我面子,随便玩,啥姿势都行。
说深浅拷贝之前,我们先来谈一谈JS的存储,JS变量存储有栈存储和堆存储,基本数据类型存放在栈中,而复杂数据类型存放在堆中,复杂数据类型的引用数据类型的地址存储在栈中
来看看上面这张图,应该还是比较清晰的,可能有的朋友会问,不是要要说深浅拷贝吗?怎么扯到变量存储了,别急嘛,做正事前不得有个前戏啥的才舒服嘛,对吧
来,我们赶紧开始做正事
先来说一下深拷贝:当一个对象拷贝另一个对象,其中一个对象的数据发生改变不会影响另一个对象的数据,因为拷贝的是原来对象的数据。
浅拷贝:当一个对象拷贝另一个对象的时候,只要其中一个对象发生改变那另一个对象也发生改变,因为浅拷贝拷贝的是对象的地址。
大家可以结合着上面的数据存储来理解一下子
再给大家举一个大栗子
假设你现在电脑中有一个文件夹,你把它复制了,那你改变其中一个文件夹里的数据另一个文件夹的内容会不会变,这个就是深拷贝
那现在我们给文件创建两个快捷方式,你通过其中一个快捷方式进入文件夹修改了数据,那用另一个快捷方式进入文件夹时文件夹的内容是否被改变了,这就是浅拷贝
薛微等一会啊,我去给你们做个小黄图
我做好了,准备发车
文件夹2是由文件夹一复制过去的(相当于深拷贝)
由于文件夹2是由文件夹1复制过去的,改变文件夹2的内容不会影响文件夹1,改变文件夹1的内容也不会影响文件夹2,那这个就是深拷贝的一个原理
下面我们再来看看浅拷贝,我放一个图你就懂了
两个快捷方式都指向文件夹1,当我打开其中一个快捷方式并且修改里面的内容时,再打开另一个快捷方式,他里面的内容也会改变,这就是浅拷贝的一个原理
原理大体就是这个样子,实际上还是挺简单的,大家理解一下吧,我去欣赏会百度云的学习资料好吧,百度云里还由好多老师等着教我知识呢
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js防止表单重复提交实现代码 2020-03-29
- js中去掉字串左右空格 2020-03-20
- NiftyCube实现圆角边框的方法 2020-03-20
- 如何用算法删除重复数据 2020-03-18
- js的验证表单 2020-03-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash