Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: new operator, constructor function, prototype, object creation, this keyword

Как работает оператор new в JavaScript?

Этот вопрос проверяет понимание механизма создания объектов через конструктор и работу оператора new, что важно для объектно-ориентированного программирования в JavaScript.

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

Оператор new создаёт новый пустой объект, привязывает к нему this внутри вызываемой функции-конструктора, связывает прототип этого объекта со свойством prototype функции и возвращает этот новый объект (если функция сама не возвращает другой объект). Это стандартный способ создания множества объектов с одинаковой структурой и поведением. Например, new User('John') создаст экземпляр объекта User.

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

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

Как работает оператор new: пошаговый алгоритм

Когда вы вызываете функцию с оператором new, происходит следующая последовательность действий:

  1. Создаётся новый пустой объект.
  2. Свойство prototype функции-конструктора связывается с внутренним свойством [[Prototype]] (или __proto__) этого нового объекта. Это устанавливает цепочку прототипов.
  3. Ключевое слово this внутри функции привязывается к только что созданному объекту.
  4. Выполняется тело функции-конструктора (обычно оно добавляет свойства и методы к this).
  5. Если функция не возвращает свой собственный объект (т.е. возвращает примитив или ничего не возвращает), оператор new автоматически возвращает новый созданный объект. Если же функция явно возвращает объект, будет возвращён именно он.

Практический пример

Рассмотрим создание объекта для представления пользователя:

function User(name, age) {
  // this автоматически ссылается на новый объект
  this.name = name;
  this.age = age;
  // Метод можно добавить прямо здесь, но эффективнее через прототип
}

// Добавляем метод в прототип, чтобы все экземпляры его разделяли
User.prototype.greet = function() {
  return `Hello, I'm ${this.name}!`;
};

// Использование new
const user1 = new User('Alice', 30);
console.log(user1.name); // 'Alice'
console.log(user1.greet()); // 'Hello, I'm Alice!'
console.log(user1 instanceof User); // true

Где и зачем это применяется

Оператор new традиционно используется в паттерне "Конструктор" для создания объектов в стиле ООП до появления классов ES6. Сегодня чаще используют синтаксис классов (class), который внутри также использует new и прототипы. Понимание работы new критически важно для отладки, создания библиотек, понимания наследования и работы с legacy-кодом.

Вывод: Используйте оператор new (или синтаксис классов) когда вам нужно создать множество объектов с общей структурой и поведением, особенно если требуется наследование через цепочку прототипов. Для простых одноразовых объектов часто достаточно литерала объекта {}.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#new operator

#constructor function

#prototype

#object creation

#this keyword

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