this
javascriptのキーワードで苦労しています。多くの記事と回答を読みましたが、このすべての知識を単純なコードに適用する方法がわかりません。
これが私の「メディエーター」オブジェクトです:
function Mediator() {
this.registered = {}
}
Mediator.prototype = {
constructor: Mediator,
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
しかし、登録されたオブジェクトでオンにすると、私はやろうとします
this.m.broadcast("Connected");
私は素晴らしいを手に入れましたUncaught TypeError: cannot call method broadcast on undefined
。
編集:
後でブロードキャスト メソッドを内部で使用できるように、e
オブジェクトがメディエーターの参照を保持するようにしますe
。私の問題はe
、登録メソッド内で設定した参照が保持されないことです。
編集2:
プロトタイプを使用する代わりに匿名オブジェクトを返すと、次のようになります。
function Mediator() {
var registered = {}
return {
register: function (id, e) {
this.registered[id] = e;
e.m = this; //<-- here
},
broadcast: function() {...}
}
}
このように、m をこれに設定すると問題なく動作し、後で他のオブジェクト内でブロードキャストを呼び出すことができます。多分これは純粋な正解ではないかもしれませんが、より良い答えが見つからない限り...