美文网首页程序员WEB前端程序开发我爱编程
WEB前端学习JavaScript知识点:说清楚深拷贝和浅拷贝的

WEB前端学习JavaScript知识点:说清楚深拷贝和浅拷贝的

作者: web前端小辰 | 来源:发表于2018-05-28 17:29 被阅读52次

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。

给你学习路线,html-css-js-ajax-jq-html5-css3-bootstrap-vue.js-node.js-react.jd

在前端面试中有个问题经常被提及,就是JavaScript中浅拷贝也深度拷贝的区别。如果是刚入门JavaScript的朋友可能都没有深度拷贝和浅拷贝的概念。今天小编就和大家说清楚JavaScript的深度拷贝和浅拷贝。

小编推荐一个学Web前端的学习裙【 五四七,三零二,三八三 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

我们说的深度拷贝和浅拷贝主要是针对复杂数据类型,就是对象Object。因为对象(包括数组)在内存中的存放都会有引用的情况。简单来说就是对象的key和value不是存放在一起的。一般来讲,key会放到一个栈中存放,对应的值放在堆中存放。key有指针指向值存放的地方。

浅拷贝与深拷贝都可以实现在已有对象上再生出一份的作用。但是对象的实例是存储在堆内存中然后通过一个引用值去操作对象,由此拷贝的时候就存在两种情况了:拷贝引用和拷贝实例,这也是浅拷贝和深拷贝的区别。

浅拷贝:浅拷贝是拷贝

引用,拷贝后的引用都是指向同一个对象的实例,彼此之间的操作会互相影响。

深拷贝:在堆中重新分配内存,并且把源对象所有属性都进行新建拷贝,以保证深拷贝的对象的引用图不包含任何原有对象或对象图上的任何对象,拷贝后的对象与原来的对象是完全隔离,互不影响。

说道这里聪明的你一定已经理解了它们的不同,我们再举个例子说明一下。

浅拷贝的例子:

深拷贝的例子:

小编推荐一个学Web前端的学习裙【 五四七,三零二,三八三 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

JavaScript中实现深度拷贝的方法有很多,有兴趣的朋友可以自己研究一下。如果你觉得本篇文章对你有帮助,欢迎点赞,评论,转发。

相关文章

网友评论

    本文标题:WEB前端学习JavaScript知识点:说清楚深拷贝和浅拷贝的

    本文链接:https://www.haomeiwen.com/subject/rqggjftx.html