区别:深复制和浅复制最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用
浅复制—-只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做“(浅复制)浅拷贝”,换句话说,浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。
深复制—-在计算机中开辟了一块新的内存地址用于存放复制的对象。
实现深拷贝的方法:
递归递归去复制所有层级属性:
![](https://img.haomeiwen.com/i8793087/86ec62618bf0be24.png)
用JSON对象的parse和stringify:
![](https://img.haomeiwen.com/i8793087/2ff56ada8556cf4a.png)
用JQ的extend方法:
![](https://img.haomeiwen.com/i8793087/b10980a2329bb3c8.png)
深拷贝的slice函数
![](https://img.haomeiwen.com/i8793087/32035591d66d9625.png)
JavaScript的concat函数
![](https://img.haomeiwen.com/i8793087/98271d1e8d4d59cd.png)
浅拷贝的方法:
用object的assign方法
![](https://img.haomeiwen.com/i8793087/e378edf4a0a3aeb8.png)
首层浅拷贝
![](https://img.haomeiwen.com/i8793087/76d9c0d2d6a9eb40.png)
array.from方法
![](https://img.haomeiwen.com/i8793087/094a4fbf3d0b6bfb.png)
网友评论