Не понимаю, что значит call(this)
Начал учить наследование в js на примере функций-конструкторов. Снизу приведен код:
function Grid(rows, cols, color, borderSize) {
this.rows = rows;
this.cols = cols;
this.color = color;
this.borderSize = borderSize;
//__proto__ = Function.prototype
//prototype = Grid.prototype
}
function User(name, surname, age) {
Grid.call(this);
this.name = name;
this.surname = surname;
this.age = age;
this.changeName = function (newName) {
return this.name = newName;
}
//__proto__ = Function.prototype
//prototype = User.prototype
}
Что означает Grid.call(this)? Знаю, что в качестве первого аргумента указываем контекст, но тут у нас просто ключевое слово "this", на что оно указывает? P.S. Подскажите, как мне правильно наследовать свойства из класса(функции-конструктора) родителя в дочерний класс. У меня в них разные аргументы, но нужно их как-то скомпоновать
Ответы (2 шт):
Grid.call(this) вызов конструктора Grid без параметров для контекста User. Так в JS вызывается цепочка конструкторов.
Если нужно вызвать конструктор с параметрами то указываете их после this.
Grid.call(this, cols, color, borderSize) соответственно как бы вызов Grid(cols, color, borderSize) для контекста User в данной ситуации.
Grid.call(this) зовет Grid с контекстом this. this указывает на текущий контекст, в данном случае зависит от того как вызывается user.