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

Створення об'єктів по одному — це помилка.

Якщо у вас є 100 однокласників і вам потрібно створити об'єкт для кожного, написання окремих об'єктів призводить до проблем. Ви занадто багато разів повторюєте свою логіку. Ви також ризикуєте отримати баги. Наприклад, ви можете випадково перезаписати назву властивості пізніше у своєму коді.

Вам потрібен кращий спосіб повторного використання логіки.

Фабричні функції Уявіть собі завод. Ви закладаєте сировину і отримуєте готовий продукт. Фабрична функція робить те саме. Вона приймає параметри та повертає новий об'єкт.

Приклад:

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

Такий підхід забезпечує безпеку імені. Ви не можете випадково змінити ім'я, оскільки воно залишається всередині області видимості функції. Ви пишете логіку один раз і використовуєте її багато разів.

Функції-конструктори Функції-конструктори також створюють об'єкти. Вони використовують ключове слово 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