وراثة فئة جافا سكريبت
الوراثة الطبقية
لإنشاء وراثة فئة ، استخدم extends
الكلمة الأساسية.
ترث الفئة التي تم إنشاؤها باستخدام وراثة فئة جميع العمليات من فئة أخرى:
مثال
قم بإنشاء فئة باسم "Model" والتي سوف ترث الطرق من فئة "Car":
class Car {
constructor(brand) {
this.carname =
brand;
}
present() {
return 'I have a ' + this.carname;
}
}
class Model extends Car {
constructor(brand, mod) {
super(brand);
this.model = mod;
}
show() {
return this.present() + ', it is a ' + this.model;
}
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML
= myCar.show();
الطريقة super()
تشير إلى الفئة الأصل.
من خلال استدعاء التابع super()
في التابع constructor ، فإننا نطلق على التابع constructor التابع للوالد ونحصل على وصول إلى خصائص وطرق الأصل.
الوراثة مفيدة لإعادة استخدام الكود: إعادة استخدام خصائص وطرق فئة موجودة عند إنشاء فئة جديدة.
حاصلون وخطابات
تتيح لك الفصول أيضًا استخدام أدوات التسجيل والمحددات.
قد يكون من الذكاء استخدام أدوات الإيداع والضوابط لممتلكاتك ، خاصةً إذا كنت تريد القيام بشيء خاص بالقيمة قبل إعادتها ، أو قبل تعيينها.
لإضافة محاضر ومحددات في الفصل ، استخدم الكلمات الأساسية
get
و .set
مثال
قم بإنشاء برنامج getter و setter للخاصية "carname":
class Car {
constructor(brand) {
this.carname
= brand;
}
get cnam() {
return this.carname;
}
set cnam(x) {
this.carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.cnam;
ملاحظة: حتى لو كانت دالة getter طريقة ، فلا تستخدم الأقواس عندما تريد الحصول على قيمة الخاصية.
لا يمكن أن يكون اسم طريقة getter / setter هو نفسه اسم الخاصية ، في هذه الحالة carname
.
يستخدم العديد من المبرمجين حرف تسطير أسفل السطر _
قبل اسم الخاصية لفصل دالة getter / setter عن الخاصية الفعلية:
مثال
يمكنك استخدام حرف الشرطة السفلية لفصل دالة getter / setter عن الخاصية الفعلية:
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;
لاستخدام أداة ضبط ، استخدم نفس البنية المستخدمة عند تعيين قيمة خاصية ، بدون أقواس:
مثال
استخدم أداة ضبط لتغيير اسم السيارة إلى "فولفو":
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;
الرفع
على عكس الدوال وإعلانات JavaScript الأخرى ، لا يتم رفع إعلانات الفئات.
هذا يعني أنه يجب عليك التصريح بفصل قبل أن تتمكن من استخدامه:
مثال
//You cannot use the class yet.
//myCar = new Car("Ford")
//This would
raise an error.
class Car {
constructor(brand) {
this.carname = brand;
}
}
//Now you can use the class:
let myCar = new Car("Ford")
ملاحظة: بالنسبة للإعلانات الأخرى ، مثل الوظائف ، لن تحصل على خطأ عند محاولة استخدامها قبل الإعلان عنها ، لأن السلوك الافتراضي لإعلانات JavaScript هو الرفع (نقل الإعلان إلى الأعلى).