jQueryイベント内の「これ」のオブジェクトコンテキスト
-
28-10-2019 - |
質問
JavaScriptで次の定義があるとします。
com.company.long.namespace = {
actions: {
add: {
defaults: {
url: 'myurl/submit',
},
invoke: function () {
var submitUrl = this.defaults.url;
com.company.long.namespace.foo.util.server.submit({
url: submitUrl,
success: function() { }
});
},
}
}
};
次に、jQueryクリックイベントのコンテキスト内で電話します。
$(myElem).click(function() {
com.company.long.namespace.actions.add.invoke();
});
方法のために 'これ' jQueryイベントコールバック内で動作し、 this.defaults このコンテキストから呼び出された場合、未定義です。とにかく、この範囲内で「これ」を使用して、フルネームスペースを定義せずに、または使用せずに使用していますか jquery.proxy?
解決
電話することはできません add
, 、それは機能ではありません。
あなたが電話する場合 add.invoke
関数、 this.default
で定義したデフォルトオブジェクトです add
物体。特別なことをする必要はありません。
他のヒント
選択するコンテキストで関数を呼び出すには、使用できます .apply(context)
(詳細情報 function.apply と function.call):
com.company.long.namespace.actions.add.invoke.apply(com.company.long.namespace.foo.util.context);
Invoke関数内 this
コンテキストオブジェクトを参照します。
これをチェックして jsfilldeの例
所属していません StackOverflow