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

js的深拷贝和浅拷贝的区别(说清楚深拷贝和浅拷贝的区别)(1)

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

js的深拷贝和浅拷贝的区别(说清楚深拷贝和浅拷贝的区别)(2)

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

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


浅拷贝的例子:

js的深拷贝和浅拷贝的区别(说清楚深拷贝和浅拷贝的区别)(3)

深拷贝的例子:

js的深拷贝和浅拷贝的区别(说清楚深拷贝和浅拷贝的区别)(4)

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

,