深度克隆

深度克隆


  

  对象的深度克隆

  /**

   * 用于判断数据类型(精准)

   * @param data

   * @returns {number}

   */

  function getType(data) {

    return Object.prototype.toString.call(data).slice(8,-1).toLowerCase()

  }

  //深度克隆

  function deepClone(target) {

    let result

    if(getType(target) === 'array'){

      result = []

    }else if(getType(target) === 'object'){

      result = {}

    }else{

      //如果传入的不是数组,不是对象,则直接返回,因为不需要再进行深度克隆了。

      return target

    }

    //循环遍历出入的数组或者对象,依次取出里面的内容放入提前准备好的容器(result)

    for (let key in target){

      let item = target[key]

       if(getType(item) === 'array' || getType(item) === 'object'){

        //拆到不能再拆

         result[key] = deepClone(item)

       }else{

         result[key] = target[key]

       }

    }

    return result

  }


你可能感兴趣的:(深度克隆)