美文网首页
对象深拷贝

对象深拷贝

作者: 哈哈乐乐WXT | 来源:发表于2019-11-30 16:26 被阅读0次

    今天又进一步认识到对象的赋值的原理,以前看对象赋值的时候知道是引用,但是实际用的时候还是简单的"= "进行赋值,结果出现的问题就是改变一个对象,另外一个对象也直接改变,原理肯定也是知道了,由于两个对象都是指向的同一个对象;

    想要真正变成两个独立的对象,就需要有各自的指向,然后就找到了深拷贝,

    function deepCopy(target) {
      if (typeof target !== "object") return;
      //判断目标类型,来创建返回值
      var newObj = target instanceof Array ? [] : {};
    
      for (var item in target) {
        //只复制元素自身的属性,不复制原型链上的
        if (target.hasOwnProperty(item)) {
          newObj[item] =
            typeof target[item] == "object" ? deepCopy(target[item]) : target[item]; //判断属性值类型
        }
      }
    
      return newObj;
    }
    

    相关文章

      网友评论

          本文标题:对象深拷贝

          本文链接:https://www.haomeiwen.com/subject/habowctx.html