Вызов функций из функции внутри объекта (литерал объекта) - PullRequest
34 голосов
/ 22 ноября 2011

Я учусь использовать объектные литералы в JS и пытаюсь запустить функцию внутри объекта, вызывая ее через другую функцию в том же объекте. Почему функция «run» не запускается при вызове из функции «init»?

var runApp = {

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

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

Ответы [ 2 ]

46 голосов
/ 22 ноября 2011

Этот код является только декларацией . Вам нужно на самом деле вызвать функцию:

runApp.init();

Демо: http://jsfiddle.net/mattball/s6MJ5/

10 голосов
/ 22 ноября 2011

Нет ничего волшебного в свойстве init объекта, которому вы присвоили функцию.Так что, если вы не позвоните, он не запустится.Никакие функции никогда не выполняются для вас при конструировании литерала объекта, подобного этому.

Таким образом, ваш код становится следующим:

...