web-dev-qa-db-ja.com

オブジェクト内の関数から関数を呼び出す(オブジェクトリテラル)

私はJSでオブジェクトリテラルを使用することを学んでおり、同じオブジェクト内の別の関数を通じて呼び出すことで、オブジェクト内の関数を実行しようとしています。関数「init」から呼び出すときに、「run」関数が実行されないのはなぜですか?

var runApp = {

    init: function(){   
         this.run()
    },

    run: function() { 
             alert("It's running!");
    }
};
34
holyredbeard

そのコードは宣言のみです。関数を実際にcallする必要があります:

runApp.init();

デモ: http://jsfiddle.net/mattball/s6MJ5/

46
Matt Ball

オブジェクトのinitプロパティには魔法のようなものはありません。あなたはたまたま関数を割り当てました。したがって、呼び出さないと実行されません。このようなオブジェクトリテラルを作成する場合、関数は実行されません。

そのため、コードは次のようになります。

var runApp = {
    init: function(){   
         this.run()
    },
    run: function() { 
         alert("It's running!");
    }
};

// Now we call init
runApp.init();
10
Alex Wayne