Применение к конструктору метода 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? Глобальному объекту? Совершенно запутался :( , помогите разобраться... |
Похоже понял как эта штука работает. Определение конструктора SubType можно рассмотреть так:
function SubType(){ var this = Object.create(SubType.prototype); SuperType.call(this); // при вызове конструктора SubType с new эквивалентно this.colors = ["red", "blue", "green"]; return this; } Теперь все встало на свои места :dance: |
Часовой пояс GMT +3, время: 20:32. |