深浅拷贝对比
简介
1.应用对象: 浅拷贝和深拷贝都是只针对于像Object,Array这样的复杂对象。
2.区别:浅拷贝只复制对象的第一层属性、深拷贝可以对对象的属性进行递归复制。如图
3.使用深拷贝原因: 希望在改变新的数组(对象)的时候,不改变原数组(对象)
一. 概念+对比
(1)浅拷贝:浅拷贝只复制指向某个对象的指针,新旧对象(如下图a,b)指向同一内存空间
(2)深拷贝:深拷贝创造一个新的内存空间,新旧对象指向不同内存空间。 修改新对象不会改到原对象,是“值”而不是“引用”
let b = JSON.parse(JSON.stringfy(a))
这句话其实是给b指定了一个新的内存虽然内存地址和a的是一样的,但是内存地址不一样,因此彼此的改变互不相干,这就是所谓的深拷贝。
二.应用场景
1:从服务器fetch到数据之后我将其存放在store中,通过props传递给界面,然后我需要对这堆数据进行修改,那涉及到的修改就一定有保存和取消,所以我们需要将这堆数据拷贝到其它地方。
参考链接:
\