Функция-конструктор — это обычная функция, которая используется для создания объектов одного типа. По сути, это “шаблон” или “чертёж” для создания однотипных объектов. Функции-конструкторы вызываются с ключевым словом [new].
// Функция-конструктор
function User(name, age) {
this.name = name;
this.age = age;
}
// Создание объектов
const user1 = new User('Иван', 25);
const user2 = new User('Петр', 30);
console.log(user1.name); // 'Иван'
console.log(user2.name); // 'Петр'Функция-конструктор — это просто обычная функция, которая работает как “фабрика” по производству однотипных объектов. Представьте, что это как станок на заводе, который делает одинаковые детали. 🏭
Это обычная функция, но с особым предназначением — создавать объекты. Отличительная особенность: вызывается с ключевым словом [new].
function Car(brand, model) {
this.brand = brand;
this.model = model;
this.start = function() {
console.log(this.brand + ' ' + this.model + ' завелась');
};
}
// Создаем автомобили по "чертежу"
const car1 = new Car('Toyota', 'Camry');
const car2 = new Car('Honda', 'Civic');
car1.start(); // 'Toyota Camry завелась'
car2.start(); // 'Honda Civic завелась'function Counter() {
this.value = 0;
this.increment = function() {
this.value++;
};
}
const counter = new Counter();
counter.increment();
console.log(counter.value); // 1function Person(name) {
// this автоматически становится пустым объектом {}
this.name = name;
// return this; (происходит автоматически)
}
const person = new Person('Иван');
// 1. Создается пустой объект {}
// 2. Этот объект становится this
// 3. Выполняется код функции
// 4. Автоматически возвращается this// Когда вы пишете:
new User('Иван');
// JavaScript делает:
// 1. const obj = {}; (создаёт пустой объект)
// 2. obj.__proto__ = User.prototype; (настраивает прототип)
// 3. User.call(obj, 'Иван'); (вызывает функцию с obj как this)
// 4. return obj; (возвращает объект)function Book(title, author) {
this.title = title;
this.author = author;
this.getInfo = function() {
return this.title + ' by ' + this.author;
};
}
// Создаем библиотеку
const books = [
new Book('Война и мир', 'Толстой'),
new Book('Преступление и наказание', 'Достоевский'),
new Book('Мастер и Маргарита', 'Булгаков')
];function Calculator() {
this.add = function(a, b) {
return a + b;
};
this.multiply = function(a, b) {
return a * b;
};
}
const calc = new Calculator();
console.log(calc.add(5, 3)); // 8function User(name) {
this.name = name;
}
// ❌ Без new — this будет window/undefined
const user = User('Иван');
console.log(user); // undefined
console.log(window.name); // 'Иван' (в нестрогом режиме)
// ✅ С new — всё работает правильно
const user2 = new User('Иван');
console.log(user2.name); // 'Иван'// ❌ Стрелочные функции не могут быть конструкторами
const User = (name) => {
this.name = name;
};
// new User('Иван'); // Ошибка!
// ✅ Обычные функции работают
function User(name) {
this.name = name;
}
new User('Иван'); // Работает!Функции-конструкторы — это удобный способ создавать множество однотипных объектов. Это основа объектно-ориентированного программирования в JavaScript! 💪
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪