const deepClone = (obj) => {
console.log(obj);
const map = new WeakMap()
map.set(obj, true)
console.log(map);
const copy = (obj) => {
if (!obj || typeof obj !== 'object') {
return {}
}
const newObj = Array.isArray(obj) ? [] : {}
for (const key in obj) {
const value = obj[key]
if (typeof value !== 'object') {
newObj[key] = value
} else {
if (map.has(value)) {
newObj[key] = null
} else {
map.set(value, true)
newObj[key] = copy(value)
}
}
}
return newObj
}
return copy(obj)
}
const seven = {
name: 'seven'
}
const juejin = {
name: 'juejin',
relative: seven
}
seven.relative = juejin
const newObj = deepClone(seven)
console.log(newObj)