Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: object, creation, constructor

Создаёт ли функция-конструктор объект всегда?

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

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

Нет, функция-конструктор создает объект не всегда. Если функция вызывается без оператора new, объект не создается. Также, если конструктор явно возвращает объект, то созданный автоматически объект игнорируется. Только при вызове с new и без возврата объекта создается новый экземпляр.

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

Условия создания объектов функциями-конструкторами

Функция-конструктор создает объект только при определенных условиях.

Стандартное поведение с new

При нормальном использовании с оператором new:

javascript

function Person(name) {
  this.name = name;
  // Не возвращаем значение явно
}

const person = new Person('Иван');
console.log(person instanceof Person); // true - объект создан

Вызов без new

Без оператора new объект не создается:

javascript

function Person(name) {
  this.name = name;
}

const result = Person('Иван'); // Вызов без new
console.log(result); // undefined - объект не создан

Явный возврат примитива

Если возвращается примитивное значение, оно игнорируется:

javascript

function Person(name) {
  this.name = name;
  return 42; // Примитив игнорируется
}

const person = new Person('Иван');
console.log(person.name); // "Иван" - объект создан

Явный возврат объекта

Если возвращается объект, он заменяет созданный объект:

javascript

function Person(name) {
  this.name = name;
  return { custom: 'object' }; // Объект подменяет созданный
}

const person = new Person('Иван');
console.log(person); // { custom: 'object' } - не Person
console.log(person instanceof Person); // false

Условия создания объекта

Объект создается когда:

  • Функция вызывается с оператором new

  • Функция не возвращает объект (или возвращает примитив)

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

javascript

function Car(brand) {
  // Проверяем, вызвана ли с new
  if (!(this instanceof Car)) {
    console.log('Объект не создан - вызвано без new');
    return;
  }
  
  this.brand = brand;
}

const car1 = new Car('Toyota'); // Объект создан
const car2 = Car('Honda');      // Объект не создан

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#object

#creation

#constructor

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