zoukankan      html  css  js  c++  java
  • 关于深拷贝和浅拷贝的学习分享

    今天看了一个关于深拷贝和浅拷贝的问题解释,挺好的,写出来分享一下

    1.浅拷贝

    var obj1 = {a:1,b:10};
    var obj2 = obj1;

    此时如果改变obj2的值的话,obj1的值也会跟着变

    2.深拷贝

    简单写法:

    var obj3 = {a:1,b:10};
    var obj4 = {a:obj3.a,b:obj3.b};

    //在这里更改obj4的b不会影响obj3的值
    obj4.b = 100;
    console.log(obj3)
    console.log(obj4)

    封装函数写法:

    function deepClone(initalObj, finalObj) {
      var obj = finalObj || {};
      for (var i in initalObj) {
        if(typeof initalObj[i] === 'object') {
          obj[i] = (initalObj[i].constructor === Array) ? [] : {};
          deepClone(initalObj[i], obj[i]);
        }else {
          obj[i] = initalObj[i];
        }
      }
      return obj;
    }
    var str = {};
    var obj = { a: "hello", b: 21 };
    deepClone(obj, str);
    console.log(str.a);

  • 相关阅读:
    python修改镜像源
    nginx 记录
    linux 常用命令
    修改ssh连上默认目录
    sqlplus 导出一张表数据
    推送kafka消息失败
    Mybatis generator配置
    Oracle导库
    docker -- 安装mysql8.0.16
    安装自动集成工具jenkins
  • 原文地址:https://www.cnblogs.com/shenwh/p/9146968.html
Copyright © 2011-2022 走看看