פונקציות מפעל (Factory Functions) ופונקציות בנאי (Constructor Functions) ב-JavaScript

יצירת אובייקטים אחד אחד היא טעות.

אם תכתבו אובייקט ידני עבור כל משתמש או חבר לכיתה, אתם חוזרים על קוד. אם יש לכם 100 משתמשים, אתם כותבים את אותה לוגיקה 100 פעמים. זה מוביל לבאגים. אתם עלולים לשנות בטעות מאפיין (property) מאוחר יותר ולשבור את האפליקציה שלכם.

השתמשו בשתי התבניות (patterns) הללו במקום זאת כדי לכתוב קוד נקי.

  1. פונקציות מפעל (Factory Functions)

חשבו על מפעל אמיתי. חומרי גלם נכנסים פנימה. מוצר מוגמר יוצא החוצה.

פונקציית מפעל מקבלת פרמטרים ומחזירה אובייקט חדש.

דוגמה:

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

היתרונות:

  1. פונקציות בנאי (Constructor Functions)

גם פונקציות בנאי יוצרות אובייקטים. הן משתמשות במילת המפתח "new" ובמילת המפתח "this". כמקובל, מתחילים אותן באות גדולה.

דוגמה:

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

כשאתם משתמשים ב-"new", JavaScript עושה את העבודה עבורכם:

אין צורך בשורת "return".

הרחבת הקוד שלכם

אתם יכולים לשלב את התבניות הללו עם מערכים (arrays) כדי לטפל בכמויות גדולות של נתונים. במקום להקליד כל שם, השתמשו בפונקציית 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