Вызов функций из функции внутри объекта (литерал объекта)

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

var runApp = {

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

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

person holyredbeard    schedule 21.11.2011    source источник


Ответы (3)


Этот код является всего лишь объявлением. Вам нужно фактически вызвать функцию:

runApp.init();

Демонстрация: http://jsfiddle.net/mattball/s6MJ5/

person Matt Ball    schedule 21.11.2011

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

Таким образом, ваш код становится таким:

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

// Now we call init
runApp.init();
person Alex Wayne    schedule 21.11.2011
comment
Это не то, что он спросил. Он хочет вызвать функцию внутри объекта, вызвав ее через другую функцию того же объекта. - person Julien Le Coupanec; 26.04.2020

Вы можете попробовать следующий код. Он должен работать:

var runApp = {

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

  run: function() { 
     alert("It's running!");
  }
};
person simba    schedule 02.07.2020