function deepClone(obj) {
return new Promise(function(resolve, reject) {
var { port1, port2 } = new MessageChannel();
port1.onmessage = function(e) {
resolve(e.data);
};
port2.postMessage(obj);
});
}
var a = { a: 1 };
deepClone(a).then(e => console.log(a == e));
特点:异步完成,可解决JSON解析方式忽略undefined,无法解决环的问题,但是还是无法复制函数。