web-dev-qa-db-fra.com

Appeler des fonctions à partir d'une fonction à l'intérieur d'un objet (littéral objet)

J'apprends à utiliser des littéraux d'objet dans JS, et j'essaie d'obtenir une fonction à l'intérieur d'un objet à exécuter en l'appelant via une autre fonction dans le même objet. Pourquoi la fonction "run" ne s'exécute-t-elle pas lors de son appel depuis la fonction "init"?

var runApp = {

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

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

Ce code n'est qu'une déclaration . Vous devez réellement appeler la fonction:

runApp.init();

Démo: http://jsfiddle.net/mattball/s6MJ5/

46
Matt Ball

Il n'y a rien de magique dans la propriété init d'un objet, à laquelle vous avez assigné une fonction. Donc, si vous ne l'appelez pas, il ne fonctionnera pas. Aucune fonction n'est jamais exécutée pour vous lors de la construction d'un objet littéral comme celui-ci.

En tant que tel, votre code devient ceci:

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

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