目录
前言
本文主要介绍 Javascript 中的数据类型、深拷贝和浅拷贝的有关知识。作为初学者,这两个概念经常会混淆或难以理解,同时,这也是面试中的高频问题。希望看到本文能为你解惑。
一、JS 中的数据类型有哪些?
如上图所示,JS 中的数据类型主要分为两类:基本类型和引用类型。
两者在存储上存在一些区别:
- 基本类型数据存储在栈中;
- 引用类型数据存储在堆中,而其变量对应的引用地址则存储在栈中。
二、什么是浅拷贝?
仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅拷贝出来的对象也会相应的改变。
创建一个新对象,这个对象拷贝了原始对象的属性:
- 如果属性是基本类型:拷贝的就是基本类型的值;
- 如果属性是引用类型:拷贝的就是内存地址;
所以如果其中一个对象改变了,就会影响另一个对象。
三、什么是深拷贝?
在计算机中开辟一块新的内存地址用于存放复制的对象。
即将一个对象从内存中完整的拷贝一份出来,从对内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。
总结
深拷贝和浅拷贝最根本的区别在于是否真正获取了一个对象的复制实体,而不是引用。
如有侵权,请联系我删。