this
オブジェクト メンバーであるイベント ハンドラーが、イベント ハンドラーを呼び出しているオブジェクトを参照する必要があるか、またはイベント ハンドラーがメンバーであるオブジェクトを参照する必要があるかのほうがよい方法でしょうか?
最初のケースでは、これはどのように見えるかの例です:
var objects = [
/* ... */
{
a: 5,
b: 8,
/* other member variables */
onSomeEvent: function(data) {
/* Do stuff with data and this.
The a and b member variables are referenced with this.effect with the library accessed through this */
}
},
/* ... */
];
function someLibrary() {
this.doSomeEvent = function(handler, data) {
this.effect = handler;
handler.onSomeEvent.call(this, data);
}
}
var someLibraryInstance = new someLibrary();
someLibraryInstance.doSomeEvent(objects[1], {c:83,d:123});
一方、2 番目のケースでは、次のようにobjects[1].onSomeEvent
なります。
onSomeEvent: function(library, data) {
/* Do stuff with library, data and this.
The a and b member variables are accessed with this.a and this.b. The library is accessed through library */
}
whilesomeLibrary.doSomeEvent
は次のようになります。
this.doSomeEvent = function(handler, data) {
handler.onSomeEvent(this, data);
}