利用MessageChannel实现对象的深拷贝

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,无法解决环的问题,但是还是无法复制函数。

你可能感兴趣的:(利用MessageChannel实现对象的深拷贝)