Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: class, syntax

Чем класс в JavaScript отличается от функции-конструктора?

Вопрос проверяет понимание объектной модели JavaScript и способов создания объектов.

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

Классы предоставляют более декларативный и читаемый синтаксис для работы с прототипами. Функции-конструкторы требуют ручной работы с prototype. Классы вводят ограничения, например запрет вызова без new. При этом под капотом используется та же прототипная модель. Различие в основном синтаксическое и поведенческое.

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

В JavaScript классы и функции-конструкторы решают одну задачу, но делают это разными способами.

Основные отличия

  1. Синтаксис
    Класс выглядит более структурированным и привычным для разработчиков из других языков.

class User {
  constructor(name: string) {
    this.name = name
  }
}
  1. Ограничения вызова
    Класс нельзя вызвать без new.
    Функцию-конструктор — можно, что часто приводит к ошибкам.

  2. Работа с методами
    Методы класса автоматически добавляются в prototype.

  3. Hoisting
    Классы не поднимаются так же, как функции.

Что общего

  • используется прототипное наследование

  • экземпляры работают одинаково

  • нет настоящей классической ООП

Вывод

Классы — это более строгий и удобный синтаксис поверх функций-конструкторов. Они улучшают читаемость кода, но не меняют базовую модель JavaScript.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#class

#syntax

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