我有一个这样的对象:
function A(id) {
this.id = id;
}
A.prototype.getId = function() {
return this.id;
}
它作为文件(“objects.js”)包含在 html 页面中,也包含在带有 importScript(“objects.js”)的 web worker 中。现在,我使用“var a = new A()”在 html 页面中创建 A 的实例,并使用“postMessage()”将其发布到 Web Worker。
有趣的是,在 worker 中它仍然具有属性“id”及其值,但原型函数丢失了。我猜原因可能是原型函数被“绑定”到 html 页面上下文而不是 web worker 上下文。
所以我在工人中做的是:
event.data.a.__proto__ = A.prototype;
它正在工作,我认为它是某种演员......
现在我的问题是,这是否是唯一且有效的方法,或者是否有更好的方法将具有原型功能的对象发布给网络工作者。对象定义在两种情况下都可用...