function deepClone(obj = {},map = new Map()) {
if(typeof obj !== 'object') {
return obj
}
if(map.get(obj)) {
return map.get(obj)
}
// 初始化返回结果
let result = {}
if(obj instanceof Array || Object.prototype.toString(obj) === "[object Array]") {
result = []
}
// 防止循环引用
map.set(obj,result)
for(const key in obj){
if(obj.hasOwnProperty(key)) {
// 递归调用
result[key] = deepClone(obj[key],map)
}
}
// 返回结果
return result
}
网友评论