私はそのようなオブジェクトを持っています:
function A(id) {
this.id = id;
}
A.prototype.getId = function() {
return this.id;
}
これは、htmlページにファイル( "objects.js")として含まれているほか、importScript( "objects.js")を使用してWebワーカーに含まれています。ここで、「var a = new A()」を使用してhtmlページにAのインスタンスを作成し、「postMessage()」を使用してWebワーカーに投稿します。
面白いことに、ワーカーにはその値を持つプロパティ「id」がまだありますが、プロトタイプ関数は失われます。その理由は、プロトタイプ関数がWebワーカーのコンテキストではなくhtmlページのコンテキストに「バインド」されているためかもしれません。
だから私が労働者でやっていることはそれです:
event.data.a.__proto__ = A.prototype;
それは機能していて、私はそれをある種のキャストとして見ています...
さて、私の質問は、それが唯一の有効な方法なのか、それともプロトタイプ関数を備えたオブジェクトをWebワーカーに投稿するためのより良い方法があるのかということです。オブジェクト定義は、両方のコンテキストで使用できます。