function deepCloneEasy(target){
if(target!==null &&typeof target==="object"){
return JSON.parse(JSON.stringify(target))
}else{
return target
}
}
// 这个方法虽然简单但是会丢失方法 且循环调用会出问题
function deepCloneHard(target,map=new Map()){
if(target!==null && typeof target==='object'){
let clone = map.get(target)
if(clone) return clone
clone = Array.isArray(target)?[]:{}
map.set(target,clone)
for(const key in target){
if(target.hasOwnProperty(key)){
if(typeof target[key] ==='object'){
deepCloneHard(target[key],map)
}else{
clone[key] = target[key]
}
}
}
return clone
}else{
return target
}
}
// 在递归的基础上,增加一个map存储深拷贝的方法,防止循环调用的问题
深拷贝的多种方法
最新推荐文章于 2022-11-24 18:39:41 发布