【发布时间】:2013-03-12 12:09:28
【问题描述】:
我有一个这样的对象:
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-page 上下文而不是 web worker 上下文。
所以我在工人中所做的是:
event.data.a.__proto__ = A.prototype;
它正在工作,我认为它是某种演员......
现在我的问题是,这是否是唯一且有效的方法,或者是否有更好的方法将具有原型功能的对象发布给网络工作者。 对象定义在两种上下文中都可用...
【问题讨论】:
标签: javascript web-worker postmessage