Не понимаю, что значит 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 шт):

Автор решения: Aziz Umarov

Grid.call(this) вызов конструктора Grid без параметров для контекста User. Так в JS вызывается цепочка конструкторов.

Если нужно вызвать конструктор с параметрами то указываете их после this.

Grid.call(this, cols, color, borderSize) соответственно как бы вызов Grid(cols, color, borderSize) для контекста User в данной ситуации.

→ Ссылка
Автор решения: Arturas Lapinskas

Grid.call(this) зовет Grid с контекстом this. this указывает на текущий контекст, в данном случае зависит от того как вызывается user.

→ Ссылка