JavaScript浅复制与深复制

一、浅复制 

浅复制是复制引用,比如有一个对象a,a对象指向一块内存空间,b复制a后,两个对象指向同一空间,如果其中一个对象的值发生改变,另一个对象指向的值也会发生改变。


实例1

b对象复制a对象,如果此时改变b对象的data值,a对象的data值也会改变。


实例二


b数组复制数组a,b数组的值改变了,a数组的值也改变了。

二、深复制 

深复制是复制实例,还是对象a和b,深复制是在计算机中重新开辟一块内存地址,让b指向这块新开辟的内存地址,同时复制a对象。

实例


这段代码简化一下其实是这样的:


意思就是重新开辟一块内存地址,让新对象去指向它,然后递归的去遍历原对象的属性,赋值给新对象。

你可能感兴趣的:(JavaScript浅复制与深复制)