浅谈对象的深复制和浅复制的区别。

  场景

  当你的组件里需要用到同一个数据,但身负不同的责任。

  举个例子:vue的双向绑定

  你在与后端的交互中请求回来的数据,res,  let a = res; let b = res;

 因为是会用到checkbox,在外层的列表里选中数据,以及在Modal里面会新增数据,提交表单会分别以两个数组的方式提交,这样做的bug是忽略了a数组与b数组都是浅复制了res,导致在外面的数据选中之后新增的数据也会选中,可这并不是想要的(出现的原因:同一个对象赋值给两个变量,这两个变量的指针都是源对象的内存地址,a的数据选中之后其实是源对象res的数据发生了变化,所以a和b都会发生变化);怎么做呢,最后b数组深复制res对象数据之后,就不会与a数组同时指向同一个地址,不会因为源对象res的值得变化而变化,这就是深复制与浅复制的区别,

浅复制的坑。。。。。。。。

深复制代码贴一个:

let b = JSON.parse(JSON.stringify(res));

当然还有其他代码,我仅浅谈区别。 

猜你喜欢

转载自www.cnblogs.com/cuixiaohua/p/10197366.html