Javascript 与Web Worker通信时保留对象标识

Javascript 与Web Worker通信时保留对象标识,javascript,web-worker,Javascript,Web Worker,在将对象传递给Web Worker时,是否有任何方法可以保留对象的标识 // main.js const w = new Worker('worker.js'); const data = { blah: 'blah' }; // receiving from worker w.onmessage = e => e.data === data; // <= THIS IS ALWAYS FALSE // worker.js onmessage = e => postM

在将对象传递给Web Worker时,是否有任何方法可以保留对象的标识

// main.js
const w = new Worker('worker.js');

const data = {
  blah: 'blah'
};

// receiving from worker
w.onmessage = e => e.data === data; // <= THIS IS ALWAYS FALSE

// worker.js
onmessage = e => postMessage(e.data);
//main.js
const w=新工人('Worker.js');
常数数据={
废话:“废话”
};
//从工人处收到
w、 onmessage=e=>e.data==data;//后信息(如数据);

如果在数据上设置.equals方法,则从工作者处取回数据后,该方法是否仍然存在?不,不可能。消息通信工具克隆对象,并且没有两个不同的对象彼此关联。@jonathanHeindl
未能在“Worker”上执行“postMessage”:函数()。。。无法克隆。
ugh这很不幸,那么您有两个选项:比较
JSON.stringify(数据)
(有点不正常)或比较每个子元素。您可以向每个消息添加随机标识符,并基于它进行比较?如果您对数据设置.equals方法,则从工作者处取回数据后它是否仍然存在?否,这是不可能的。消息通信工具克隆对象,并且没有两个不同的对象彼此关联。@jonathanHeindl
未能在“Worker”上执行“postMessage”:函数()。。。无法克隆。
ugh这很不幸,那么您有两个选项:比较
JSON.stringify(数据)
(有点不正常)或比较每个子元素。您可以将随机标识符添加到每条消息中并基于它进行比较吗?