由于Web-Worker JSON在线程之间序列化数据,所以这样的东西不起作用:
worker.js
function Animal() {}
Animal.prototype.foobar = function() {}
self.onmessage = function(e) {
self.postMessage({animal: new Animal()})
}
Run Code Online (Sandbox Code Playgroud)
main.js
let worker = new Worker('worker.js')
worker.onmessage = function(e) {
console.log(e.data)
}
worker.postMessage('go!')
Run Code Online (Sandbox Code Playgroud)
结果将是foobar原型方法丢失的简单对象.
是否可以将自定义对象传回主线程而不会丢失其原型方法?就像,这可能ArrayBuffer吗?我不熟悉那些东西,所以我有点迷茫.