1. 程式人生 > >利用MessageChannel實現物件的深拷貝

利用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,無法解決環的問題,但是還是無法複製函式。