← Назад к вопросам

Что такое функция-конструктор?

1.0 Junior🔥 132 комментариев
#Node.js и JavaScript#ООП

Комментарии (2)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Основной принцип

Когда функция вызывается с new:

  1. Создаётся новый пустой объект
  2. this внутри функции указывает на этот новый объект
  3. Функция инициализирует свойства объекта
  4. Функция автоматически возвращает этот объект
function Person(name, age) {
  this.name = name;
  this.age = age;
  this.greet = function() { return `Привет, я ${this.name}`; };
}

const person1 = new Person('Иван', 30);
console.log(person1.name);

Как это работает

function Car(brand, model) {
  this.brand = brand;
  this.model = model;
  this.start = function() { return `${this.brand} ${this.model} завелась`; };
}

const myCar = new Car('Toyota', 'Camry');

Prototype и наследование

Методы можно добавлять на прототип конструктора для экономии памяти.

function Animal(name) { this.name = name; }
Animal.prototype.speak = function() { console.log(`${this.name} издает звук`); };

const dog = new Animal('Шарик');
dog.speak();

instanceof и constructor

function Device(name) { this.name = name; }
const phone = new Device('iPhone');

console.log(phone instanceof Device); // true
console.log(phone.constructor === Device); // true

Класс ES6 (современный способ)

До введения классов функции-конструкторы были единственным способом. Теперь классы предпочтительнее.

class User {
  constructor(id, username) {
    this.id = id;
    this.username = username;
  }
  getProfile() { return `User: ${this.username}`; }
}

const user = new User(1, 'ivan');

Возврат из конструктора

Если функция явно вернёт объект, вернётся он. Если примитив — проигнорируется.

function WeirdConstructor() {
  this.value = 'default';
  return { custom: 'object' };
}

const obj = new WeirdConstructor();
console.log(obj.custom); // 'object'

Функции-конструкторы — важный концепт для понимания JavaScript и наследования.

Что такое функция-конструктор? | PrepBro