براي ايجاد كلاس وراثتي از كلمه كليدي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() مراجعه به كلاس والد (car) دارد .
با فراخواني متدsuper( ) در متد سازنده ، متد سازنده والد فراخوان ميشود .دراين حالت براي وارث ويژگي و متدهاي والد قابل دسترس ميباشد.
وراثت براي قابليت استفاده مجدد كد مفيد است .هنگاميكه كلاس جديدي ايجاد مي شود ، از ويژگيها ومتدهاي يك كلاس موجود استفاده ميگردد.
كلاسها همچنين اين امكان را ميدهند كه بتوانيد ازآن دريافت داشته ويا آنرا تنظيم كنيد.
استفاده از دريافت كننده ها وتنظيم كننده مي تواند هوشمندانه باشد، به خصوص اگر بخواهيدقبل از برگرداندن آنها وياقبل ازتنظيم آنها، كار خاصي با مقدار انجام دهيد.
براي افزودن دريافت كننده و تنظيم كننده از كيورد هايget وset استفاده ميشود.
مثال ـ دريافت كننده وتنظيم كننده براي ويژگيcarname ايجاد ميكند .
class Car { constructor(brand) { this.carname = brand; } get cnam() { return this.carname; } set cnam(x) { this.carname = x; } } const myCar = new Car("Ford"); document.getElementById("demo").innerHTML = myCar.cnam;
توجه ـ حتي اگر دريافت كننده متدي باشد، براي بدست آوردن مقدار از پرانتز استفاده نكنيد.
نام هاي دريافت كننده و تنظيم كننده نبايد مشابه نام ويژگي باشد .دراين مثال carnameاست .
بسياري از برنامه نويسان از يك كراكترunderscore يعني"_" قبل از نام ويژگي براي جداكردن نام دريافت كننده و تنظيم كننده با ويژگي واقعي استفاده مي نمايند.
مثال ـ استفاده ازunderscore
class Car { constructor(brand) { this._carname = brand; } get carname() { return this._carname; } set carname(x) { this._carname = x; } } const myCar = new Car("Ford"); document.getElementById("demo").innerHTML = myCar.carname;
براي استفاده از تنظيم كننده بهمان روالي استفاده كنيدكه مفدار ويژگي را بدون پرانتز تنظيم ميكنيد.
مثال ـ با استفاده از تنظيم كننده مقدارcarname به "Volo" تغيير مييابد .
class Car { constructor(brand) { this._carname = brand; } get carname() { return this._carname; } set carname(x) { this._carname = x; } } const myCar = new Car("Ford"); myCar.carname = "Volvo"; document.getElementById("demo").innerHTML = myCar.carname;
برخلاف توابع وساير تعاريف جاوااسكريپت، تعاريف كلاس بالا رفتني نيست .اين بدين معني است كه كلاس قبل از استفاده بايد تعريف شده باشد.
مثال ـ براي نشان دادن جايگاه درست تعريف كلاس
//You cannot use the class yet. //myCar = new Car("Ford") will raise an error. class Car { constructor(brand) { this.carname = brand; } } //Now you can use the class: const myCar = new Car("Ford")
توجه ـ براي ساير تعريف ها، مانند توابع، وقتي قبل از تعريف ازآن استفاده ميكنيد، خطائي دريافت نميكنيد .چون رفتار پيش فرض جاواسكريپت تعريف را به بالاي اسكريپت مي برد.