题解 | #深拷贝#
深拷贝
https://www.nowcoder.com/practice/70ca77b52d424ced8ebb348cd77c1dc5
const _completeDeepClone = (target, map = new Map()) => {
if (typeof target != 'object' || !target) return target
let constructor = target.constructor
if (/^(Function|RegExp|Date|Map|Set)$/i.test(constructor.name)) return new constructor(target)
// 判断是否循环引用的(判断属性是不是存在了)
if (map.get(target)) return map.get(target)
let result = new target.constructor()
// 存target
map.set(target, result)
// let result = Array.isArray(target) ? [] : {}
for (let key in target) {
if (target.hasOwnProperty(key)) {
result[key] = _completeDeepClone(target[key], map)
}
}
return result
}


