Согласно 'message'
документации о событии :
Сообщение проходит сериализацию и анализ.
Сериализация объекта Date
представляет собой строку:
// serialize and rebuilds an object: { test: "2019-03-05T16:20:17.863Z" }
JSON.parse(JSON.stringify({test: new Date()}));
Итак, нет, обходного пути нет: каждый процесс (как рабочий, так и главный) имеет свою собственную среду (т. Е. Свое собственное пространство для хранения объектов), поэтому вы не можете делиться ссылками в разных средах. Для иллюстрации:
const input = {some: 'thing'};
const output = JSON.parse(JSON.stringify(input));
console.log('are input and output the same object?', input === output); // false
Если вы обеспокоены производительностью в этом, возможно, переосмыслите свою архитектуру, чтобы работникам не приходилось отправлять столько дат по каналу.
В качестве примечания вы можете повысить производительность, используя внутреннюю временную метку Date
вместо строки времени по умолчанию:
const t0 = new Date();
for (let i = 0; i < 1000000; i++) {
const tmp = new Date();
// this took ~6.9s on JSFiddle
new Date(JSON.parse(JSON.stringify(tmp)));
// this took ~2.8s on JSFiddle
new Date(JSON.parse(JSON.stringify(+tmp)));
}
const t1 = new Date();
console.log('time spent', t1 - t0);