الوراثة وsuper ومتى نفضّل التركيب
وسّعوا class أساسية باستخدام extends، واستدعوا super في البُنّاءات، وتجاوزوا methods بأمان، واعرفوا متى يكون التركيب البسيط أفضل
الوراثة وsuper ومتى نفضّل التركيب درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
الصورة الكبيرة
الهدف: استخدام الوراثة الأساسية دون ارتباك.
- ينشئ extends صنفًا فرعيًا
- يستدعي super(...) constructor الصنف الأب
- أعد تعريف method، ويمكنك اختياريًا استدعاء super.method()
- إذا لم تكن العلاقة “is-a”، ففضّل composition

extends + super
أنشئ صنفًا فرعيًا باستخدام extends؛ واستدعِ super(name) لتشغيل constructor الصنف الأب وإعداد this.
// Base class with a small field and method
class Animal {
constructor(name) {
this.name = name;
}
info() {
return "Animal:" + this.name;
}
}
// Child class extends the base and calls super(...)
class Dog extends Animal {
constructor(name, breed) {
// must call super() before using this
super(name);
this.breed = breed;
}
speak() {
return "woof";
}
}
const d = new Dog("Milo", "Beagle");
console.log(d.info(), d.speak());

إعادة تعريف method
عند إعادة التعريف، يمكنك استدعاء super.method() لإعادة استخدام منطق الصنف الأساسي، ثم إضافة التعديل الخاص بك.
// Override a method; keep parent behavior with super.method()
class Button {
click() {
return "base-click";
}
}
class IconButton extends Button {
click() {
// call parent behavior, then add something
const base = super.click();
return base + "+icon";
}
}
const b = new IconButton();
console.log(b.click()); // "base-click+icon"

فضّل composition عند وجود has-a
إذا كانت العلاقة has-a (استخدام أداة مساعدة)، ففضّل composition على الوراثة للحفاظ على بساطة الأصناف.
// Composition: use a helper object instead of extending
class Logger {
log(msg) {
console.log("[log]", msg);
}
}
class Player {
constructor(name, logger) {
this.name = name;
this.logger = logger; // has-a logger
}
score(points) {
this.logger.log(this.name + " +" + points);
}
}
const logger = new Logger();
const p = new Player("Ayla", logger);
p.score(5);

is-a مقابل has-a
تمثّل الوراثة علاقة is-a: إن Dog هو is an Animal. أما composition فهي للمساعدات من نوع has-a.
// Use instanceof for a quick is-a check
console.log("Dog is Animal?", d instanceof Animal);
console.log("Player is Animal?", p instanceof Animal);

عادات المبتدئين
نصائح:
- اجعل تسلسلات الوراثة shallow للمبتدئين.
- استدعِ super(...) أولًا في constructors الأصناف الفرعية.
- أعد تعريف ما تحتاج إليه فقط؛ وأعد الاستخدام عبر super.method().
- فضّل composition للأدوات المساعدة والميزات المشتركة بين الأجزاء.

اختبار أساسيات super(...)
تحقق سريع: super في constructor صنف فرعي.

مراجعة
مراجعة: استخدم extends لعلاقة is-a حقيقية، واستدعِ super(...) مبكرًا، وأعد التعريف بحذر (استدعِ super.method() عندما يكون ذلك مفيدًا)، وفضّل composition للمساعدات.

الأسئلة الشائعة
هل درس «الوراثة وsuper ومتى نفضّل التركيب» مجاني؟
نعم — نص درس «الوراثة وsuper ومتى نفضّل التركيب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «الوراثة وsuper ومتى نفضّل التركيب»؟
وسّعوا class أساسية باستخدام extends، واستدعوا super في البُنّاءات، وتجاوزوا methods بأمان، واعرفوا متى يكون التركيب البسيط أفضل تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «الوراثة وsuper ومتى نفضّل التركيب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حقول Class والحقول الخاصة # والأعضاء الثابتة
- الوراثة وsuper ومتى نفضّل التركيب
- Mixins (لمحة) — إعادة استخدام بسيطة من دون تسلسلات هرمية عميقة