Проверяет понимание наследования классов в JavaScript и правил вызова конструктора родителя при отсутствии собственного конструктора в дочернем классе.
В JavaScript при наследовании классов через ключевое слово extends дочерний класс может не объявлять собственный конструктор. В этом случае движок JavaScript автоматически создаёт для него конструктор по умолчанию, который просто вызывает super(...args), передавая все полученные аргументы родительскому классу. Это необходимо, потому что в JavaScript любой класс, наследующий от другого, обязан вызвать super() перед использованием this.
class Parent {
constructor(name) {
this.name = name;
console.log(`Parent constructor called with ${name}`);
}
}
class Child extends Parent {
// Нет собственного конструктора
}
const child = new Child('Alice');
// Вывод: Parent constructor called with Alice
console.log(child.name); // AliceВ этом примере Child не определяет конструктор, поэтому при создании экземпляра new Child('Alice') вызывается автоматический конструктор, который передаёт аргумент 'Alice' в super(). Родительский конструктор выполняется, и свойство name устанавливается.
super() до использования this, иначе возникнет ошибка ReferenceError.Это поведение упрощает создание иерархий классов, когда дочерний класс не требует дополнительной инициализации. Оно полезно для реализации простого наследования, где вся логика инициализации сосредоточена в родительском классе, и позволяет избежать дублирования кода.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию