美文网首页
深拷贝 浅拷贝

深拷贝 浅拷贝

作者: 恋上梨泰院小绅士 | 来源:发表于2021-03-02 15:19 被阅读0次

    一、对象深拷贝实现

    1. 使用递归的方式实现深拷贝

    function deepClone(obj){

      let objClone =  Array.isArray(obj) ? [] : {};

      if (obj && typeof obj === 'object') {

        for(let key in obj){

          if (obj[key] && typeof obj[key] === 'object'){

            objClone[key] = deepClone(obj[key]);

          }else{

            objClone[key] = obj[key]

          }

        }

      }

      return objClone;

    }

    2、通过JSON对象实现深拷贝 (无法实现对象中方法的深拷贝)

    3、通过Object.assign()拷贝

    注意: 当对象只有一级属性为深拷贝;当对象中有多级属性时,二级属性后就是浅拷贝

    二、数组深拷贝实现

    1、concat(arr1, arr2,....)

    注意:当数组中的元素均为一维是深拷贝, 数组中元素一维以上是值的引用

    2. slice(idx1, idx2)

    参数可以省略

    1)没有参数是拷贝数组

    2)只有一个参数是从该位置起到结束拷贝数组元素

    3)两个参数,拷贝从起始位置到结束位置的元素(不包含结束位置的元素:含头不含尾)

    注意:当数组中的元素均为一维是深拷贝,数组中元素一维以上是值的引用

    相关文章

      网友评论

          本文标题:深拷贝 浅拷贝

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