0

オブジェクト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値にパラメーターとして渡す方法はありますか?

4

2 に答える 2