توابع کارخانه‌ای (Factory Functions) و توابع سازنده (Constructor Functions) در جاوااسکریپت

ساختن اشیاء یکی یکی یک اشتباه است.

اگر برای هر کاربر یا هم‌کلاسی یک شیء به صورت دستی بنویسید، کد را تکرار می‌کنید. اگر ۱۰۰ کاربر داشته باشید، همان منطق را ۱۰۰ بار می‌نویسید. این کار منجر به باگ می‌شود. ممکن است بعداً به‌طور تصادفی یک ویژگی (property) را تغییر دهید و برنامه خود را از کار بیندازید.

در عوض، برای نوشتن کد تمیز از این دو الگو استفاده کنید.

۱. توابع کارخانه‌ای (Factory Functions)

یک کارخانه واقعی را تصور کنید. مواد اولیه وارد می‌شود و یک محصول نهایی خارج می‌شود.

یک تابع کارخانه‌ای پارامترها را می‌گیرد و یک شیء جدید را برمی‌گرداند.

مثال:

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

مزایا:

۲. توابع سازنده (Constructor Functions)

توابع سازنده نیز اشیاء را ایجاد می‌کنند. آن‌ها از کلمه کلیدی new و کلمه کلیدی this استفاده می‌کنند. طبق قرارداد، این توابع را با حرف بزرگ شروع می‌کنید.

مثال:

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

وقتی از new استفاده می‌کنید، جاوااسکریپت کار را برای شما انجام می‌دهد:

نیازی به دستور return ندارید.

مقیاس‌پذیری کد شما

می‌توانید این الگوها را با آرایه‌ها ترکیب کنید تا حجم زیادی از داده‌ها را مدیریت کنید. به جای تایپ کردن تک‌تک نام‌ها، از یک تابع 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