المُنشئات (Constructors) في JavaScript

إن إنشاء الكائنات (objects) واحدًا تلو الآخر عملية بطيئة. إذا كنت بحاجة إلى عشرة طلاب لديهم نفس الخصائص، فستضيع وقتك في كتابة نفس الكود مرارًا وتكرارًا.

تحل JavaScript هذه المشكلة باستخدام دوال المُنشئ (Constructor Functions).

فكر في المُنشئ كأنه مخطط (blueprint). المخطط الخاص بالمنزل ليس منزلاً في حد ذاته، لكنك تستخدمه لبناء العديد من المنازل.

كيف يعمل:

المُنشئ هو دالة خاصة. تستخدم الكلمة المفتاحية new لإنشاء كائنات منها.

مثال:

function Student(name, age, city) { this.name = name; this.age = age; this.city = city; }

const student1 = new Student("John", 21, "Chennai"); const student2 = new Student("David", 22, "Madurai");

لماذا نستخدم هذا؟

  • يوفر الوقت.
  • يمنع تكرار الكود.
  • ينشئ هيكلاً موحداً لبياناتك.

دور this:

داخل المُنشئ، تشير كلمة this إلى الكائن الجديد الذي تقوم بإنشائه.

إذا قال المعلم "فصلي"، فإن كلمة "فصلي" تشير إلى ذلك المعلم تحديداً. في الكود، تشير this.name إلى اسم الكائن المحدد الذي أنشأته للتو.

ماذا يحدث عند استخدام new؟

عندما تقوم بتشغيل const emp = new Employee("John", 50000)، تحدث أربع خطوات:

  1. تقوم JavaScript بإنشاء كائن فارغ.
  2. تشير الكلمة المفتاحية this إلى ذلك الكائن الجديد.
  3. يتم إضافة الخصائص إلى الكائن.
  4. يتم إرجاع الكائن إليك.

إضافة الإجراءات:

يمكن للكائنات القيام بأكثر من مجرد تخزين البيانات؛ يمكنها تنفيذ إجراءات. في البرمجة، تُسمى هذه الإجراءات "الأساليب" (methods).

مثال:

function Laptop(brand, ram) { this.brand = brand; this.ram = ram; this.showDetails = function() { console.log(this.brand, this.ram); }; }

كائن Laptop الآن يحتوي على بيانات ودالة لعرض تلك البيانات.

أفضل الممارسات:

  • ابدأ دائماً الحرف الأول من اسم المُنشئ بحرف كبير (Capitalize). استخدم Student وليس student. هذا يخبر المطورين الآخرين بضرورة استخدام الكلمة المفتاحية new.
  • استخدم دائماً الكلمة المفتاحية new. إذا نسيتها، ستعمل الدالة كدالة عادية مما سيؤدي إلى تعطل الكود الخاص بك.

مقارنة:

كائنات الـ Literals (Object Literals):

  • جيدة لكائن واحد فقط.
  • بسيطة وسريعة.
  • لا يوجد مخطط.

دوال المُنشئ (Constructor Functions):

  • جيدة لإنشاء العديد من الكائنات.
  • قابلة لإعادة الاستخدام ومنظمة.
  • تستخدم نهج المخطط (blueprint).

المصدر: https://www.w3schools.com/js/js_object_constructors.asp المصدر: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor المنشور الكامل: https://dev.to/annapoo/constructor-in-javascript-4nbm