Funkcje fabryczne i funkcje konstruktora w JavaScript

Tworzenie obiektów jeden po drugim to błąd.

Jeśli masz 100 kolegów z klasy i musisz stworzyć obiekt dla każdego z nich, ręczne pisanie pojedynczych obiektów prowadzi do problemów. Powtarzasz swoją logikę zbyt wiele razy. Ryzykujesz również wystąpieniem błędów. Na przykład możesz przypadkowo nadpisać nazwę właściwości w późniejszej części kodu.

Potrzebujesz lepszego sposobu na ponowne wykorzystanie logiki.

Funkcje fabryczne Pomyśl o fabryce. Wkładasz surowce i otrzymujesz gotowy produkt. Funkcja fabryczna robi to samo. Przyjmuje parametry i zwraca nowy obiekt.

Przykład:

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

To podejście zapewnia bezpieczeństwo nazwy. Nie możesz jej przypadkowo zmienić, ponieważ pozostaje ona wewnątrz zakresu funkcji. Piszesz logikę raz i używasz jej wielokrotnie.

Funkcje konstruktora Funkcje konstruktora również tworzą obiekty. Używają słowa kluczowego this oraz słowa kluczowego new. Zgodnie z konwencją, funkcje te zaczynają się wielką literą.

Przykład:

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

Gdy używasz słowa kluczowego new, JavaScript wykonuje pracę za Ciebie. Tworzy nowy obiekt, przypisuje go do this i automatycznie go zwraca. Nie potrzebujesz instrukcji return.

Skalowanie kodu Możesz połączyć te metody z tablicami, aby obsługiwać duże ilości danych.

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

classmates.forEach(c => console.log(c.reply()))

Dzięki temu Twój kod jest czysty i skalowalny.

Główny cel jest prosty:

Źródło: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb