Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: class inheritance, constructor, extends, super, javascript

Что произойдёт в консоли, если дочерний класс не имеет собственного конструктора, но родительский класс его имеет?

Проверяет понимание наследования классов в JavaScript и правил вызова конструктора родителя при отсутствии собственного конструктора в дочернем классе.

Короткий ответ

Если дочерний класс не имеет собственного конструктора, JavaScript автоматически создаёт скрытый конструктор, который вызывает super() с переданными аргументами. Это гарантирует, что конструктор родительского класса будет выполнен. Если родительский конструктор ожидает аргументы, их нужно передать при создании экземпляра дочернего класса.

Длинный ответ

Наследование и конструкторы в 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

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#class inheritance

#constructor

#extends

#super

#javascript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию