0

Начал учить наследование в 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. Подскажите, как мне правильно наследовать свойства из класса(функции-конструктора) родителя в дочерний класс. У меня в них разные аргументы, но нужно их как-то скомпоновать

Torin_21
  • 459

2 Answers2

2

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

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

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

Aziz Umarov
  • 22,567
  • 2
  • 10
  • 33
0

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