什么是浅拷贝?什么是深拷贝?

解决这个问题的前提是:了解过js的变量存储类型、赋值。

懂的就跳过

==============

变量存储类型分两类

①基本类型:直接存储在栈中的数据。(字符串、布尔值、未定义、数字、null)

②引用类型:将该对象引用地址存储在中,然后对象里面的数据存放在中。(数组、对象、函数)

这里解释一下为什么null是基本类型:有人说他用type of打印出来不是oject吗?

null只是一个空指针对象,没有数据。根据引用类型特点可以看一下是否符合。

=================

回到我们的问题上

说说深拷贝和浅拷贝还有赋值的区别,这样好理解

浅拷贝:也就是拷贝A对象里面的数据,但是不拷贝A对象里面的子对象

深拷贝:会克隆出一个对象,数据相同,但是引用地址不同(就是拷贝A对象里面的数据,而且拷贝它里面的子对象)

赋值:获得该对象的引用地址


浅拷贝和深拷贝的区别
三者的区别

下面用实例来说明

赋值特点说明:

赋值,疑惑点来自于下图。
赋值打印图

浅拷贝特点说明:

obj还是上面的

深拷贝说明:

第一种方法的缺陷在于函数不能拷贝
第二种也有其他的问题,这里不深入剖析了。主要就是解释这三者的关系

喜欢的点个赞,对你有帮助的点个赞。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容