Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الدالة super()

جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 27 من 56.

تقوم الطريقة super() بإنشاء وتهيئة الكائن باستخدام منشئ الفئة الأب. ويجب استدعاؤها قبل أن تتمكن من إضافة أي خصائص إلى الفئة التابعة.

فكر في الأمر بهذه الطريقة: تقوم الفئة الأب ببناء أساس الكائن، و super() تقول "ابنِ ذلك الأساس أولاً" قبل أن تضيف الفئة الابنة ميزاتها الخاصة.

لنلقِ نظرة على المثال. أنشئ فئة أساسية (parent class):

class Employee {
  constructor(name) {
    this.name = name;
  }
}

الآن قم بإنشاء فئة تابعة (child class) ترث من الفئة الأساسية (parent):

class Manager extends Employee {
  constructor(name, department) {
    super(name); // استدعاء منشئ الفئة الأساسية مع الاسم
    this.department = department;
  }
}

ما الذي يحدث هنا:

  1. constructor(name, department) - يحتاج Manager إلى كل من name و department
  2. super(name) - يمرر name إلى constructor الخاص بـ Employee
  1. this.department - يضبط الخاصية الفريدة للمدير (Manager)

يؤدي هذا إلى إنشاء مدير (Manager) يمتلك كلاً من الخصائص الموروثة (name) وخصائصه الخاصة (department)!

قم بإنشاء مثيل من الفئة الفرعية:

const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name);      // "Sarah"
console.log(myManager.department); // "Engineering"

يجب استدعاء الدالة super() قبل استخدام this في المُنشئ (constructor) لفئة مشتقة. إذا لم تقم باستدعاء super()، فستقوم JavaScript برمي خطأ مرجعي (reference error).

challenge icon

التحدي

بفرض وجود فئة Salad التي ترث من Meal. يجب أن تحتوي الـ Salad على كل من name و ingredients.

مهمتك هي إكمال مُنشئ (constructor) الفئة Salad من خلال:

  1. استدعاء super() مع الخاصية name
  2. تعيين الخاصية ingredients

جرّب بنفسك

import { Meal } from './classes.js';
import { Salad } from './classes.js';

// كود الاختبار - لا تقم بالتعديل
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name);       // يجب أن يطبع "Caesar"
console.log(salad.ingredients); // يجب أن يطبع ["lettuce", "croutons", "cheese"]
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming