深浅拷贝对比

76 阅读1分钟

深浅拷贝对比

简介

1.应用对象: 浅拷贝和深拷贝都是只针对于像Object,Array这样的复杂对象。

2.区别:浅拷贝只复制对象的第一层属性、深拷贝可以对对象的属性进行递归复制。如图

6c073cff2875a4277054bf0d4f363548.jpeg

3.使用深拷贝原因: 希望在改变新的数组(对象)的时候,不改变原数组(对象)

一. 概念+对比

(1)浅拷贝:浅拷贝只复制指向某个对象的指针,新旧对象(如下图a,b)指向同一内存空间

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0ODcwNTI5,size_16,color_FFFFFF,t_70.png

20190515090041606.png

(2)深拷贝:深拷贝创造一个新的内存空间,新旧对象指向不同内存空间。 修改新对象不会改到原对象,是“值”而不是“引用”

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0ODcwNTI5,size_16,color_FFFFFF,t_70-20220819163952486.png

image.png

 let b = JSON.parse(JSON.stringfy(a))

这句话其实是给b指定了一个新的内存虽然内存地址和a的是一样的,但是内存地址不一样,因此彼此的改变互不相干,这就是所谓的深拷贝。

二.应用场景

1:从服务器fetch到数据之后我将其存放在store中,通过props传递给界面,然后我需要对这堆数据进行修改,那涉及到的修改就一定有保存和取消,所以我们需要将这堆数据拷贝到其它地方。

参考链接:

blog.csdn.net/qq_34870529…

blog.csdn.net/qq_37430247…

\