Показать сообщение отдельно
  #9 (permalink)  
Старый 14.03.2013, 00:51
Аспирант
Отправить личное сообщение для jsgeek Посмотреть профиль Найти все сообщения от jsgeek
 
Регистрация: 13.02.2013
Сообщений: 34

После медитации пришел к такому умозаключению.
Конструктор оперирует вновь созданным объектом, который доступен по ссылке this.
Выражение
this.base = Obj(name,age)

возвращает undefined так как без new это обычная функция.
Если сделать так:
this.base = new Obj(name, age);

В
this.base
будет объект класса Obj
А теперь самое интересное:
Вызов
Obj.call(this, name, age)

подсовывает конструктору Obj не новый объект а тот которым оперирует Obj2. Т.е. эти два конструктора оперируют одним объектом.
И наконец-то моя ошибка:
this.base = Obj.call(this, name, age)
this.base === undefined так как конструктор не возвращает объект а инициализирует его.

Последний раз редактировалось jsgeek, 14.03.2013 в 00:54.
Ответить с цитированием