Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что возвращает функция-конструктор при вызове через new?

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

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

При вызове функции-конструктора через оператор new создаётся новый пустой объект, и ключевое слово this внутри функции начинает ссылаться на этот объект. После выполнения кода функции, оператор new автоматически возвращает этот новый объект, если функция сама не возвращает другой объект. Если функция возвращает примитивное значение (например, число или строку), оно игнорируется, и возвращается созданный объект.

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

В JavaScript оператор new используется для создания экземпляра объекта из функции-конструктора. Понимание этого процесса важно для работы с объектно-ориентированным программированием в языке.

Как работает оператор new

При вызове new Constructor() происходит следующая последовательность шагов:

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

Примеры кода

Рассмотрим стандартный случай:

function User(name) {
  this.name = name;
  this.isAdmin = false;
  // Неявный возврат this
}

let john = new User('John');
console.log(john.name); // John
console.log(john instanceof User); // true

Пример с явным возвратом примитива (игнорируется):

function Car(model) {
  this.model = model;
  return 42; // Примитив – будет проигнорирован
}

let myCar = new Car('Toyota');
console.log(myCar.model); // Toyota (объект создан)

Пример с возвратом другого объекта (возвращается он):

function Animal(type) {
  this.type = type;
  // Возвращаем совершенно другой объект
  return { custom: 'object' };
}

let dog = new Animal('Dog');
console.log(dog.type); // undefined
console.log(dog.custom); // 'object'
console.log(dog instanceof Animal); // false

Где применяется

Функции-конструкторы и оператор new исторически использовались для создания множества объектов с одинаковой структурой и поведением, особенно до появления классов ES6. Сегодня этот механизм лежит в основе работы встроенных объектов (например, new Date(), new Array()) и многих библиотек. Понимание этого необходимо для отладки, создания собственных библиотек и для понимания прототипного наследования.

Вывод: Используйте функции-конструкторы с new, когда вам нужно создавать множество однотипных объектов с общими методами через прототип, особенно в кодовой базе, не использующей синтаксис классов ES6.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#new operator

#constructor function

#this keyword

#prototype

#object creation

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