Фабричные функции и функции-конструкторы в JavaScript
Создавать объекты по одному — это ошибка.
Если у вас есть 100 одноклассников и вам нужно создать объект для каждого из них, написание отдельных объектов приведет к проблемам. Вы слишком много раз повторяете одну и ту же логику. Кроме того, вы рискуете допустить ошибки. Например, позже в коде вы можете случайно перезаписать имя свойства.
Вам нужен более эффективный способ повторного использования логики.
Фабричные функции Представьте себе фабрику. Вы загружаете сырье и получаете готовый продукт. Фабричная функция делает то же самое: она принимает параметры и возвращает новый объект.
Пример:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
Этот подход защищает переменную name. Вы не сможете случайно изменить имя, потому что оно остается внутри области видимости функции. Вы пишете логику один раз и используете её многократно.
Функции-конструкторы
Функции-конструкторы также создают объекты. Они используют ключевое слово this и ключевое слово new. По соглашению, названия таких функций начинаются с заглавной буквы.
Пример:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
Когда вы используете ключевое слово new, JavaScript выполняет работу за вас. Он создает новый объект, присваивает его this и автоматически возвращает его. Вам не нужно использовать оператор return.
Масштабирование кода Вы можете комбинировать эти методы с массивами для обработки больших объемов данных.
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
classmates.forEach(c => console.log(c.reply()))
Это делает ваш код чистым и масштабируемым.
Основная цель проста:
- Напишите логику один раз.
- Используйте её повсюду.
- Избегайте повторений.
Источник: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb