Функции-фабрики и функции-конструкторы в JavaScript

Создавать объекты по одному — это ошибка.

Если вы вручную создаете объект для каждого пользователя или одноклассника, вы дублируете код. Если у вас 100 пользователей, вам придется писать одну и ту же логику 100 раз. Это приводит к ошибкам. Вы можете случайно изменить свойство позже и сломать свое приложение.

Вместо этого используйте два следующих паттерна, чтобы писать чистый код.

  1. Функции-фабрики

Представьте настоящий завод. На вход поступает сырье, на выходе получается готовый продукт.

Функция-фабрика принимает параметры и возвращает новый объект.

Пример:

function classFactory(name) {
    return {
        reply() {
            return `${name} is present`
        }
    }
}

Преимущества:

  1. Функции-конструкторы

Функции-конструкторы также создают объекты. Они используют ключевое слово "new" и ключевое слово "this". По соглашению, их названия начинаются с заглавной буквы.

Пример:

function Classmate(name) {
    this.name = name
    this.reply = function() {
        return `${this.name} is present`
    }
}

Когда вы используете "new", JavaScript выполняет работу за вас:

Вам не нужен оператор "return".

Масштабирование кода

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

Пример:

const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))

Теперь у вас есть список объектов, готовых к использованию.

Резюме:

Источник: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb