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;
}