zoukankan      html  css  js  c++  java
  • 浅谈对象的深复制和浅复制的区别。

      场景

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

      举个例子: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));

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

  • 相关阅读:
    ThreadLocal
    mysql
    heroku 的用法
    Redis
    disruptor
    RxJava
    TCP
    虚拟机的安装及配置等
    k8s
    Ribbon源
  • 原文地址:https://www.cnblogs.com/cuixiaohua/p/10197366.html
Copyright © 2011-2022 走看看