Фабричные функции и функции-конструкторы в 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