手写实现深拷贝
function deepCopy (obj, hash = new WeakMap()) {
if (obj == null || typeof obj != 'object') {
return obj
}
if (obj instanceof RegExp) {
return new RegExp(obj)
}
if (obj instanceof Date) {
return new Date(obj)
}
if (hash.get(obj)) return hash.get(obj)
let res = obj instanceof Array ? [] : {}
hash.set(obj, res)
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
res[key] = deepCopy(obj[key], hash)
}
}
return res
}
手写实现浅拷贝
function deepCopy(object){
if(!object||typeof object!=="object") return;
let newobject=Array.isArray(object)?[]:{};
for(let key in object){
if(object.hasOwnProperty(key)){
newobject[key]=typeof object[key]==="object"?deepCopy(object[key]):object[key];
}
}
return newobject;
}