扫码关注公众号

js语言考点之深拷贝和浅拷贝
10-31
29观看
01

什么是基本类型和引用类型?

1、基本类型:就是值类型,即在变量所对应的内存区域存储的是值2、引用类型:就是地址类型何为地址:地址就是编号,要地址何用,就是为了容易找到。每个人的家里为什么要有一个唯一的地址,就是在邮寄时,能够找到你家。比如:我们最早的超市存包的格子,每个格子都有个编号,你存包时,服务员会把你的东西放在某个格子里,再把这个格子的编号给你(一个牌子)。你购物完毕取包时,直接给服务员你的牌子(有编号),服务员根据你的编号就会找到你的包。这个编号就是格子的地址。内存也是一样的,每个内存都有一个编号,方便cpu查找。要不然,浩瀚的内存海洋,cpu要找到数据靠啥找。以上的变量arr就是引用类型,arr所对应的内存中存储着地址,真正的数据是在地址对应的内存区域里,就像,你填写简历时,会在简历的那张纸上写上你家的地址。简历上写你家地址的地方就相当于arr。而你家是根据这个地址可以找到的。简历上写你家地址的地方就相当于引用着你家(可以想象一根无形的线牵引着你家,在简历上的这根无形的线,顺藤摸瓜就能找到你家)。所以叫做引用类型。

来自:JavaScript语言-深浅拷贝
02

深拷贝浅拷贝的区别?

浅拷贝,指的是创建新的数据,这个数据有着原始数据属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值。如果属性是引用类型,拷贝的就是内存地址。即浅拷贝是拷贝一层,深层次的引用类型则共享内存地址。深拷贝开辟一个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。

来自:JavaScript语言-深浅拷贝
03

说一下实现JS对象深拷贝的几种方法?

1.JSON.parse(JSON.stringify())序列化和反序列先将需要拷贝的对象进行JSON字符串化,然后再pase解析出来,赋给另一个变量,实现深拷贝。2.Object.assign(target,source1,source2)es6新增的方法,可用于对象合并,将源对象的所有可枚举属性,复制到目标对象上。3.迭代递归方法基本上可以满足常用的数据结构的值的深拷贝,但因为js对象的数据结构较多,所以并不能全部覆盖,比如说newNumber(),这种基本数据类型的包装对象,就没有进行处理。因此在使用时,可以先对所要进行深拷贝的对象进行一个预判,来决定使用哪种方式。

来自:JavaScript语言-深浅拷贝
课程
专栏
【校招VIP】JS实现深拷贝的三种方式
csdn
深拷贝
【校招VIP】详细讲解js中的深拷贝与浅拷贝
csdn
深拷贝
浅拷贝
【校招VIP】面试题:深拷贝和浅拷贝
csdn
深拷贝
浅拷贝
js语言和框架-JavaScript语言-深浅拷贝
3专栏
1课程
3 试题