𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁
Het één voor één aanmaken van objecten is een fout.
Als je voor elke gebruiker of klasgenoot handmatig een object schrijft, herhaal je code. Als je 100 gebruikers hebt, schrijf je 100 keer dezelfde logica. Dit leidt tot bugs. Je kunt later per ongeluk een eigenschap wijzigen en je applicatie laten crashen.
Gebruik in plaats daarvan deze twee patronen om schone code te schrijven.
- Factory Functions
Denk aan een echte fabriek. Grondstoffen gaan erin. Een eindproduct komt eruit.
Een factory function neemt parameters aan en geeft een nieuw object terug.
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
De voordelen:
- Je schrijft de logica één keer.
- Je hergebruikt de functie voor elk nieuw object.
- De data blijft veilig. De naam blijft binnen de scope van de functie. Je kunt deze niet per ongeluk van buitenaf overschrijven.
- Constructor Functions
Constructor functions maken ook objecten aan. Ze maken gebruik van het "new"-trefwoord en het "this"-trefwoord. Volgens de conventie begin je deze met een hoofdletter.
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
Wanneer je "new" gebruikt, doet JavaScript het werk voor je:
- Het maakt een nieuw object aan.
- Het wijst het toe aan "this".
- Het geeft het object automatisch terug.
Je hebt geen "return"-statement nodig.
Je code schalen
Je kunt deze patronen combineren met arrays om grote hoeveelheden data te verwerken. In plaats van elke naam te typen, kun je een map-functie gebruiken.
Example:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
Nu heb je een lijst met objecten die klaar zijn voor gebruik.
Samenvatting:
- Vermijd handmatige objectcreatie om herhaling te voorkomen.
- Gebruik Factory Functions om logica te inkapselen en data te beschermen.
- Gebruik Constructor Functions om het "new"-trefwoord te benutten voor automatische objectcreatie.
- Schrijf je logica altijd één keer en hergebruik deze overal.
Bron: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb