1

なんらかの愚かな理由で私が苦労している非常に基本的なjavascriptの質問を私は信じています。

以下のオブジェクトを視覚化した場合。'init'関数内から1つの関数を呼び出すにはどうすればよいですか?

TC.design = {

        init : function(){
            //How would I run the loadPage function here? 
        },
        loadPage : function(){

        }
}

this.loadPage();を試しました。これは動作することを期待していましたが、未定義を返します。

私は明らかにここで基本的なことを理解していません、うまくいけば誰かが説明することができます。

編集: これは解決されました...

ジョセフシルバーロケットのおかげで、私は自分のエラーに気づきました...

この問題は、javascript .call()関数の誤解が原因で発生しました。私は今私が理解している電話initをしていましTC.design.init.call()たが間違っています。謝罪いたします....

4

3 に答える 3

2

this.loadPageの値を変更しない限り、正常に動作するはずですthis

例えば:

setTimeout(function(){
    TC.design.init();
}, 1000);

これはうまくいきます。とinit呼ばれるとthisですTC.design

setTimeout(TC.design.init, 1000);

これはうまくいきません。今、の中にありthisます。したがって、動作しません。windowinitthis.loadPage

そのため、呼び出し方に注意してくださいTC.design.init

于 2012-07-17T22:21:43.700 に答える
2

これは機能しませんか?

TC.design = {
        init : function(){
            TC.design.loadPage();
        },
        loadPage : function(){
           alert('Booga')
        }
}
于 2012-07-17T22:17:02.477 に答える
0

init関数内で、オブジェクトthisを参照します。動作するはずですが、関数を呼び出すには関数を適切に呼び出す必要があります。TG.designthis.loadPage()init

サンプルコードは次のとおりです。

var TC = {
    design: {
        init: function() {
            this.loadPage();
        },
        loadPage: function() {
            conosle.log('Works');
        }
    }
};

TC.design.init();​

ここにフィドルがあります:http://jsfiddle.net/85AWT/

于 2012-07-18T00:35:33.633 に答える