js中对象的拷贝,浅拷贝和深拷贝
2017-10-27 本文已影响219人
全栈弄潮儿
JS中对象分为基本类型和复合(引用)类型,基本类型存放在栈内存,复合(引用)类型存放在堆内存。
简单的变量,内存小,我们直接复制不会发生引用。
而对于对象这种内存占用比较大的来说,直接复制就会发生引用,因为这种复制,只是将复制出来的东西的指向指向了要复制的那个东西,简单的说,就是两个都同时指向了一个空间,如果改变其中一个,另一个也会发生变化。这就发生了引用。
深拷贝和浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。
1)深拷贝在计算机中开辟了一块内存地址用于存放复制的对象;那么我们就可以利用递归的思想来做,及省性能,又不会发生引用。
2)而浅拷贝仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。
更多angular1/2/4、ionic1/2/3、react、vue、微信小程序、nodejs等技术文章、视频教程和开源项目,请关注微信公众号——全栈弄潮儿。