// Map
if (obj instanceof Map) {
target = new Map()
map.set(obj, target) // 当这里是map的时候,set了个空的Map(视频里没有讲)
obj.forEach((v, k) => {
const v1 = cloneDeep(v, map)
const k1 = cloneDeep(k, map)
console.log(v1) // 前 输出 Map(0) {size: 0}
target.set(k1, v1)
console.log(v1) // 后 输出 Map(1) {'y' => Map(1)}
})
}
....
// 用例代码
const a = new Map()
a.set('y', a)
当Map循环引用的时候,两处console.log(v1)的值不同
在前面的v1输出 Map(0) {size: 0}
在后面的v1输出Map(1) {‘y’ => Map(1)}
中间只差了个target.set, 后面的值就变了,有点不太理解