zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝及应用场景

    深浅拷贝,都是拷贝对象内的数据到新对象,新旧对象内的数据相同。

    1.浅拷贝

    只拷贝对象的第一层属性,如果对象中还有对象,只是拷贝的内存地址(引用),两者修改会相互影响。用于对象中都是基本数据类型的情况。

    2.深拷贝

    拷贝对象的多层属性,如果对象中还有对象,会继续拷贝,使用递归实现。

    3.深浅拷贝的实现

    浅拷贝:

    function copy(oldObj) {
            let newObj = {};
            for (let k in oldObj) {
              newObj[k] = oldObj;
            }
            return newObj;
          }

    深拷贝:

    function deepCopy(oldObj) {
            let newObj = {};
            for (let k in oldObj) {
              if (oldObj[k] instanceof Array) {
                newObj[k] = [];
                newObj[k] = deepCopy(oldObj);
              } else if (oldObj[k] instanceof Object) {
                newObj[k] = {};
                newObj[k] = deepCopy(oldObj);
              } else {
                newObj[k] = oldObj[k];
              }
            }
            return newObj;
          }

     4.深浅拷贝的应用场景

    查看很多网友分享的业务需求后,我觉得深浅拷贝的应用场景可以用一句话总结:我想要使用这个对象内的数据,但是不想修改原本的对象内的数据内容时,使用深浅拷贝来复制数据,并对新的对象内的数据进行操作。




  • 相关阅读:
    Date日期对象
    JAVA适配器
    java 对象的多态性
    简单轮播
    ecshop 教程地址
    瀑布流js排列
    phpcms 搜索结果页面栏目不显示解决 方法
    手机自动跳转
    字串符转换数字、取小数点后两位数的方法
    js 判断鼠标进去方向
  • 原文地址:https://www.cnblogs.com/mandymm/p/13967633.html
Copyright © 2011-2022 走看看