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);

  • 相关阅读:
    SASS教程sass超详细教程
    浅谈angular2+ionic2
    深入理解JSON对象
    浅谈闭包
    响应式开发入门
    CSS之float属性归纳探讨
    新学期加油
    Good moring!
    async await的前世今生
    ASP.NET配置KindEditor文本编辑器-图文实例
  • 原文地址:https://www.cnblogs.com/shenwh/p/9146968.html
Copyright © 2011-2022 走看看