![在这里插入图片描述](https://img-blog.csdnimg.cn/79f860c3ab0f4b45bc700f0d4627ce16.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
浅拷贝:
将一个对象的数据复制给另一个对象,并且两个对象是相互独立,互不影响的。
例如上图中:newArr = arr,两个对象的地址是一样的,一个修改另一个也跟着修改。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ab4b2f68bd09453d905f914e71a0df9d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
如何断开两个的链接呢。
for循环 或者 Object.assign 或者 扩展运算符
for循环:
![在这里插入图片描述](https://img-blog.csdnimg.cn/5f22503345754b77a65040180185be1e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
for循环复制的时候,是不同地址的赋值,所以 newArr 和 arr 两个不相互影响
扩展运算符
![在这里插入图片描述](https://img-blog.csdnimg.cn/f97feb9158494e2ab7ff7849179ea6a6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
Object.assign( newobj, oldobj )
![在这里插入图片描述](https://img-blog.csdnimg.cn/17d6cde2bf2b4a72be0813e2c91ea50c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
深拷贝:
当一个对象中还有一个或多个对象嵌套时,因为浅拷贝只能拷贝一层,当浅拷贝是其实是拷贝的对象中对象的地址。所以当你更改的时候,都跟着改了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/fe7fb54f16524e0fb807ad22d096bfc9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/35eca55ca4ac4c76911aa8a4cb36fb24.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZGK6K-J6Ieq5bex6KaB5Z2a5by6,size_20,color_FFFFFF,t_70,g_se,x_16)