js中对象的拷贝,浅拷贝和深拷贝

JS中对象分为基本类型和复合(引用)类型,基本类型存放在栈内存,复合(引用)类型存放在堆内存。

简单的变量,内存小,我们直接复制不会发生引用。

而对于对象这种内存占用比较大的来说,直接复制就会发生引用,因为这种复制,只是将复制出来的东西的指向指向了要复制的那个东西,简单的说,就是两个都同时指向了一个空间,如果改变其中一个,另一个也会发生变化。这就发生了引用。

深拷贝和浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。

1)深拷贝在计算机中开辟了一块内存地址用于存放复制的对象;那么我们就可以利用递归的思想来做,及省性能,又不会发生引用。

2)而浅拷贝仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。

前端面试题每日更新,欢迎参与讨论,地址:https://github.com/daily-interview/fe-interview。


更多angular1/2/4/5、ionic1/2/3、react、vue、微信小程序、nodejs等技术文章、视频教程和开源项目,请关注微信公众号——全栈弄潮儿

js中对象的拷贝,浅拷贝和深拷贝_第1张图片

脑筋急转弯:

js中对象的拷贝,浅拷贝和深拷贝_第2张图片

生活小窍门

js中对象的拷贝,浅拷贝和深拷贝_第3张图片

你可能感兴趣的:(js中对象的拷贝,浅拷贝和深拷贝)