Читая Dr. Блог Акселя Раушмайера о классах ES6, я понимаю, что производный класс имеет следующий конструктор по умолчанию, если он не указан
constructor(...args) {
super(...args);
}
Я также понимаю, что если я хочу использовать this
в конструкторе, мне сначала нужно вызвать super
, иначе this
еще не будет инициализирован (выдает ReferenceError).
constructor(width, height) {
this.width = width; // ReferenceError
super(width, height);
this.height = height; // no error thrown
...
}
Верно ли тогда следующее предположение? (а если нет, не могли бы вы объяснить условия, при которых я должен явно вызывать super
)
Для производных классов мне нужно только явно вызвать super
, когда...
- Мне нужно получить доступ к
this
из конструктора - Конструктор суперкласса требует других аргументов, чем конструктор производного класса.
Есть ли другие случаи, когда я должен включать вызов конструктора суперкласса?
class ABC extends DEF { ...
, вам нужно поставитьsuper(...args);
, потому что вы только что указали с помощьюextends DEF
, что хотите получить от него. Если вы не наследуете какой-либо класс, просто не ставьте «супер» в конструкторе ABC. Это так просто. - person Azamantes   schedule 27.12.2016super
, если родительский класс принимает те же аргументы, что и дочерний класс. - person Felix Kling   schedule 27.12.2016super
по умолчанию, это только часть конструктора по умолчанию. - person Bergi   schedule 27.12.2016