دوال المصنع (Factory Functions) ودوال البناء (Constructor Functions) في JavaScript

إنشاء الكائنات (objects) واحدًا تلو الآخر هو خطأ.

إذا قمت بكتابة كائن يدويًا لكل مستخدم أو زميل دراسة، فستقوم بتكرار الكود. إذا كان لديك 100 مستخدم، فستكتب نفس المنطق 100 مرة. يؤدي هذا إلى حدوث أخطاء (bugs). قد تقوم بتغيير خاصية (property) عن طريق الخطأ لاحقًا مما يؤدي إلى تعطل تطبيقك.

استخدم هذين النمطين بدلاً من ذلك لكتابة كود نظيف.

  1. Factory Functions

تخيل مصنعًا حقيقيًا. تدخل المواد الخام، ويخرج منتج نهائي.

تأخذ الـ factory function المعاملات (parameters) وتُرجع كائنًا جديدًا.

Example:

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

المزايا:

  1. Constructor Functions

تقوم الـ constructor functions أيضًا بإنشاء الكائنات. وهي تستخدم الكلمة المفتاحية "new" والكلمة المفتاحية "this". ومن المتعارف عليه أن تبدأ هذه الدوال بحرف كبير (capital letter).

Example:

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

عندما تستخدم "new"، يقوم JavaScript بالعمل نيابة عنك:

لست بحاجة إلى جملة "return".

Scaling your code

يمكنك دمج هذه الأنماط مع المصفوفات (arrays) للتعامل مع كميات كبيرة من البيانات. بدلاً من كتابة كل اسم، استخدم دالة map.

Example:

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

الآن لديك قائمة من الكائنات الجاهزة للاستخدام.

Summary:

Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb