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:
- Napisz logikę raz.
- Używaj jej wszędzie.
- Unikaj powtórzeń.
Źródło: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb