オブジェクトmyobject.optionsをパラメーターとして受け取る関数functionWithDifferentScopeがあります。optionsオブジェクトのペアの 1 つは、myObjectで定義された関数myCallbackを指すコールバックです。
私が達成しようとしているのは、グローバル レベルで (サード パーティによって) 定義された関数のコールバックにmyObject 名前空間を挿入することです。
簡単な例:
var myObject = {
options: {
callback: this.myCallback(this),
...,
},
init: function() {
// functionWithDifferentScope operates in the 'window' context
functionWithDifferentScope(this.options);
},
myCallback: function(namespace) {
// 'this' is window
// 'namespace' is myObject
}
}
myObject.init();
このスクリプトを実行すると、定義時にthis.myCallback(this)が実行されたように見えます (かっこのため?)。myObject.init();と同様に 1 回。呼ばれます。最初の実行ではこれはmyObjectですが、その後のfunctionWithDifferentScopeによる呼び出しではこれがwindowとして識別されます。
myObject 名前空間をmyObject.options.callback値にパラメーターとして渡す方法はありますか?