في عالم برمجة الويب، تعتبر وراثة الأصناف (Class Inheritance) في جافاسكريبت مفهومًا حيويًا يسهم في بناء تنظيم هيكل الشيفرة وتحسين قابلية إعادة الاستخدام. يتيح لك هذا المفهوم بناء هيكل تسلسلي للكود، حيث يمكنك إعادة استخدام السمات والسلوكيات المشتركة بين الكائنات.
في جافاسكريبت، يتم تحقيق وراثة الأصناف باستخدام الكلمة الرئيسية “extends”، حيث يمكنك إنشاء صنف جديد يستمد خصائصه وسلوكياته من صنف آخر. على سبيل المثال:
javascriptclass Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name} is eating.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name);
this.breed = breed;
}
bark() {
console.log(`${this.name} is barking.`);
}
}
const myDog = new Dog("Buddy", "Golden Retriever");
myDog.eat(); // ينادي الدالة eat من الصنف الأساسي Animal
myDog.bark(); // ينادي الدالة bark الجديدة المضافة في الصنف المشتق Dog
في هذا المثال، يوجد لدينا صنف Animal
الذي يحتوي على الخاصية name
والدالة eat
، ثم يتم إنشاء صنف Dog
يستمد من Animal
باستخدام الكلمة extends
. الصنف الفرعي Dog
يضيف خاصية جديدة (breed
) ودالة جديدة (bark
) إلى الصنف الأساسي.
تعتبر وراثة الأصناف أداة قوية تسهم في تنظيم الشيفرة وجعلها أكثر فهمًا وصيانة. يمكنك أيضًا الاستفادة من مفاهيم أخرى مثل التعددية (Polymorphism) والاستخدام الزمني (Composition) لتعزيز قوة تصميم البرمجة في جافاسكريبت.
المزيد من المعلومات
بالطبع، دعنا نستكشف المزيد من المعلومات حول وراثة الأصناف في جافاسكريبت.
-
البنية الداخلية لوراثة الأصناف:
- عندما يتم إنشاء كائن من الصنف المشتق (
Dog
في المثال السابق)، يتم استدعاء الدالةconstructor
التي تنتمي إلى الصنف المشتق أولاً، وباستخدامsuper
يمكننا استدعاء الدالةconstructor
من الصنف الأساسي (Animal
) لتهيئة الخصائص المشتركة.
- عندما يتم إنشاء كائن من الصنف المشتق (
-
الطرق الاستثنائية (Method Overriding):
- يمكنك تجاوز الطرق الموجودة في الصنف الأساسي في الصنف المشتق. في المثال، لو كان لدينا دالة
eat
في الصنفDog
، فإن الصنف المشتق سيستخدم الدالة الموجودة في الصنف المشتق بدلاً من الدالة الموجودة في الصنف الأساسي.
- يمكنك تجاوز الطرق الموجودة في الصنف الأساسي في الصنف المشتق. في المثال، لو كان لدينا دالة
-
التحقق من النوع (Type Checking):
- يمكنك استخدام
instanceof
للتحقق من نوع الكائن. مثلاً،myDog instanceof Dog
سيكون صحيحًا، ولكنmyDog instanceof Animal
أيضًا سيكون صحيحًا لأنDog
يستمد منAnimal
.
- يمكنك استخدام
-
التعددية (Polymorphism):
- يسمح لك التعددية بتعريف واجهات مشتركة للصنف الأساسي واستخدامها في الصنف المشتق. في المثال، يمكننا أن نعتبر كل الحيوانات (
Animal
) بشكل عام ونستخدم دون الحاجة إلى معرفة نوع الحيوان الفعلي.
- يسمح لك التعددية بتعريف واجهات مشتركة للصنف الأساسي واستخدامها في الصنف المشتق. في المثال، يمكننا أن نعتبر كل الحيوانات (
-
المبدأ اللازم للمعلومات (Liskov Substitution Principle):
- يشير إلى أنه يمكن استخدام كائن من الصنف المشتق في أي مكان يتوقع كائنًا من الصنف الأساسي دون أي تأثير سلبي على البرنامج. هذا يعزز فهمًا أفضل ويحسن قابلية الصيانة.
-
استخدام الخصائص الثابتة (Static Properties):
- يمكنك أيضًا إضافة خصائص ثابتة إلى الأصناف باستخدام
static
. هذه الخصائص تنتمي إلى الصنف نفسه وليست إلى كائناته.
- يمكنك أيضًا إضافة خصائص ثابتة إلى الأصناف باستخدام
-
المزيد حول الـ ES6 Classes:
- ES6 قدمت كلمات مفتاحية جديدة لتعريف الأصناف مثل
class
وextends
وsuper
. تجعل هذه الميزات بناء الأصناف في جافاسكريبت أكثر قوة ووضوحًا.
- ES6 قدمت كلمات مفتاحية جديدة لتعريف الأصناف مثل
ورثة الأصناف في جافاسكريبت تقدم إطارًا قويًا لبناء تنظيمية وفعالة لتطوير تطبيقات الويب، وتمثل جزءًا أساسيًا في تقنيات البرمجة الكائنية الموجهة.