質問

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 物体。特別なことをする必要はありません。

例: http://jsfiddle.net/p4j4k/

他のヒント

選択するコンテキストで関数を呼び出すには、使用できます .apply(context) (詳細情報 function.applyfunction.call):

com.company.long.namespace.actions.add.invoke.apply(com.company.long.namespace.foo.util.context);

Invoke関数内 this コンテキストオブジェクトを参照します。
これをチェックして jsfilldeの例

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top