2014-01-07 3 views
0

Я пытаюсь узнать о структурах и анонимных функциях в JavaScript, и я просмотрел много кодов или библиотек, которые сделали это таким образом. Однако, когда я пытаюсь следовать тому, как они это делают, кажется, что это неправильно. Вот мой код:вызов функции прототипа повторяет неправильную функцию

файл 1: называется startUp;

this.project = this.project || {}; 

(function(){ 

    project.init = function(){ 
     console.log("startUp"); 
     project.Setup(); 

    } 

}()); 

Файл 2: называется Setup

this.project = this.project || {}; 

(function() { 

    var Setup = function() { 
     this.init(); 
    }; 

    var p = Setup.prototype; 

    p.init = function() { 
     console.log("Setup"); 
    }; 

    project.Setup = Setup; 
}()); 

по какой-то причине не так ли в настройках не вызывается, но запуск не так ли зацикливается, как сумасшедший.

ответ

2

Внутри Setup, this не так, как вы думаете. this определяется как вызывается функция.

Так что, когда вы делаете project.Setup();, значение this внутри Setup - project. Таким образом, this.init() вызывает project.int(). Который вызывает project.Setup(); и т. Д., Создавая бесконечный цикл.

Setup.prototype.init будет называться только если вы делаете new Setup.

+0

О, это отлично работает спасибо: D – user629283

+0

Просто записка 'new Setup' действительно не является решением здесь. Я просто пытался объяснить, как это работает (и «новый»). –

+0

О, хорошо, но, похоже, для меня правильная работа. Приветствия в любом случае – user629283

Смежные вопросы