Показать сообщение отдельно
  #1 (permalink)  
Старый 20.09.2012, 15:25
Аспирант
Отправить личное сообщение для Nubi Посмотреть профиль Найти все сообщения от Nubi
 
Регистрация: 06.08.2008
Сообщений: 43

Применение к конструктору метода call c аргументом this
Пытаюсь разобраться в таком демонстрационном примере
function SuperType(){
    this.colors = ["red", "blue", "green"];
}
                   
function SubType(){  
    SuperType.call(this);
}
var instance1 = new SubType();

По-ненашему такой подход называется constructor stealing. Для чего нужно, более-менее понятно - чтобы у каждого экземпляра SubType было свое собственное свойство colors, сделанное в соответствии с "калькой" конструктора SuperType.
Но никак не могу понять, что происходит за кулисами внутри определения SubType (т. е. вот эта строка SuperType.call(this).
К конструктору SuperType применяется метод call. Но я нигде не вижу слова new, значит такой вызов по идее должен возвращать undefined. Мало того, есть еще и параметр this. Чему тут равен this? Глобальному
объекту?
Совершенно запутался , помогите разобраться...

Последний раз редактировалось Nubi, 20.09.2012 в 15:27.
Ответить с цитированием