首页 > 试题广场 >

实现js中所有对象的深度克隆(包装对象,Date对象,正则对

[问答题]
请你讲一下,实现js中所有对象的深度克隆(包装对象,Date对象,正则对象)的方法是什么,特点是什么?
JSON.parse(JSON.stringfy(obj))
发表于 2019-02-13 14:57:05 回复(1)
function cloneDeep(obj){
if(obj==null){
return obj;
}
if(typeof obj !== 'object'){
return obj;
}
if(obj instanceof RegExp) return new RegExp(obj);
if(obj instanceof Date) return new Date(obj);
let newObj = new obj.constructor;
for(let key in obj){
newObj[key] = cloneDeep(obj[key])
}
return newObj;
}

编辑于 2019-02-18 23:18:49 回复(0)
if (typeof obj !== object) {
 return obj
}
if ( obj instanceof Date) {
    return new Date(obj);
}
if (obj instanceof RegExp) {
    return new RegExp(obj);
}

// 除去对特殊处理。 对 object 的循环属性拷贝。 

发表于 2019-01-22 22:12:40 回复(1)
递归,对特殊类型的判断处理
发表于 2019-01-21 03:19:43 回复(0)