深克隆

  const deepClone =(obj)=>{

    if(obj === null ) return null;

    if( typeof obj !== "object") return obj;

    if(obj instanceof RegExp){

      return new RegExp(obj)

    }

    if(obj instanceof Date){

      return new Date(obj)

    }

    if(obj instanceof Function){

        return new Function(obj)

    }

    //不直接创建空对象的目地,克隆结果和之前保持相同所属类

    let newObj = new obj.constructor

    for (let key in obj) {

        //hasOwnProperty 检查自用属性

        if (obj.hasOwnProperty.call(obj, key)) {

            newObj[key] = deepClone(obj[key])

        }

    }

    return newObj;

  }

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