Javascript

对象深拷贝

联系站长 作者:web知道 来源:未知 2020-03-06 19:53 我要评论

对象拷贝...

  1. 浅拷贝的实现

    第一种:借助于js的JSON对象的两个函数

    JSON.stringify(father)将一个json对象转为json字符串

    JSON.parse(str)将一个json字符串转为json对象

    它的实现原理是现将对象转为一个基本数据类型,在执行拷贝,不过这个只是适用于json格式的数据对其它情况不一定都能满足。测试如下:

    var father={familyName:"张"};var son={};

    son = JSON.parse(JSON.stringify(father));

    father.familyName="李"

    son.familyName

     
  2. 第四步:借助于for 循环实现数组的深拷贝

    具体代码和实现:如下

     

    var father = [1,2,3,4,5]

    var son = copyArr(father)

    function copyArr(father) {

        let res = []

        for (let i = 0; i < arr.length; i++) {

         res.push(father[i])

        }

        return res

    }


    递归方法

    function deepClone(source){
      const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
      for(let keys in source){ // 遍历目标
        if(source.hasOwnProperty(keys)){
          if(source[keys] && typeof source[keys] === 'object'){ // 如果值是对象,就递归一下
            targetObj[keys] = deepClone(source[keys]);
          }else{ // 如果不是,就直接赋值
            targetObj[keys] = source[keys];
          }
        }
      }
      return targetObj;
    }

    const originObj = {a:'a',b:'b',c:[1,2,3],d:{dd:'dd'}};
    const cloneObj = deepClone(originObj);
    console.log(cloneObj === originObj); // false




本文如有侵犯版权请联系站长删除。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
精彩导读