← Назад к вопросам
Через какую конструкцию можно вызвать метод родителя в дочернем классе
1.6 Junior🔥 131 комментариев
#JavaScript Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Ключевое слово super
В JavaScript и TypeScript для вызова методов родительского класса используется конструкция super. Это встроенное ключевое слово, которое предоставляет доступ к методам и свойствам базового класса.
Использование super с методами
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // вызов конструктора родителя
this.breed = breed;
}
speak() {
super.speak(); // вызов метода родителя
console.log(`${this.name} barks`);
}
}
const dog = new Dog('Rex', 'Labrador');
dog.speak();
Обязательное использование super в конструкторе
Если дочерний класс имеет конструктор, то super() ОБЯЗАТЕЛЬНО должен быть вызван перед использованием this:
class Parent {
constructor(value) {
this.value = value;
}
}
class Child extends Parent {
constructor(value, extra) {
super(value); // ОБЯЗАТЕЛЬНО!
this.extra = extra; // теперь this доступен
}
}
super с getters и setters
class Base {
get name() {
return 'Base';
}
}
class Derived extends Base {
get name() {
return super.name + ' Derived';
}
}
const obj = new Derived();
console.log(obj.name);
Важные ограничения
- super может использоваться ТОЛЬКО в классах
- super() в конструкторе должен быть вызван ДО любого использования this
- super работает с наследованием через extends
- Статические методы также могут использовать super
Практический пример с TypeScript
class Controller {
protected handleError(error: Error): void {
console.error('Base error handling:', error.message);
}
}
class ApiController extends Controller {
protected handleError(error: Error): void {
super.handleError(error);
this.logToService(error);
}
private logToService(error: Error): void {
console.log('Logging to service...');
}
}
Super — универсальный способ работы с наследованием в современном JavaScript.