// 所需拷贝的对象含有内置类型并且不包含函数,使用MessageChannel
function structuralClone(obj) {
return new Promise(resolve => {
const { port1, port2 } = new MessageChannel()
port2.onmessage = ev => resolve(ev.data)
port1.postMessage(obj)
})
}
var obj = {
a: 1,
b: {
c: 2
}
}
obj.b.d = obj.b
//console.log(obj)
const test = async () => {
const clone = await structuralClone(obj)
console.log('---')
console.log(clone)
}
test()