2012-03-06 7 views
0

Я пытаюсь создать объект javascript, который может вызвать другие методы внутри себя. Тем не менее, у меня запуталась странная проблема, которую я просто не могу понять.Вызов метода в объекте Javascript

У меня есть следующий код

myObjectDef = function() { 
    this.init = function() { 
     //do some stuff 
     this.doSecondInit(); 
    } 
    this.doSecondInit = function() { 
     //do some more stuff 
    } 
} 

myObject = new myObjectDef(); 
myObject.init(); 

Я получаю сообщение об ошибке, которое утверждает «Сообщение: Объект не поддерживает это свойство или метод». И это заканчивается на this.doSecondInit() ;. Я не могу понять, почему он это делает. Мой код отлично подходит для вызова второго метода. Как это сделать?

+1

Ваш код выглядит нормально и отлично работает для меня: http://jsfiddle.net/vdVE8/ - возможно, вам нужно будет показать недостающие бит. – nnnnnn

ответ

3

Там есть дополнительный набор круглых скобок здесь:

this.doSecondInit() = function() { 

Вы не можете присвоить результат вызова функции, не говоря уже о результате функции, которая даже не существует.

После правки, ваша вещь, кажется, работает нормально:

http://jsfiddle.net/nabVN/

Вы уверены, что вы не имеете ту же опечатку в реальном коде? Лучше начните привыкать к тому, чтобы не поместить этот () после каждого вызова функции, что, вероятно, является плохой привычкой, перенесенной с языков, где функции не являются значениями.

+0

Извините, исправил мой код. – Robbert

+0

Похоже, мне нужно будет внимательно посмотреть на мой код. Это определенно не работает для меня, и у меня определенно нет первого набора круглых скобок. Я уверен, что есть что-то еще, что я сейчас не замечаю. – Robbert

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