‎‎وراثت كلاس جاوااسكريپتJavaScript Class Inheritance -‎

Previous >    <Next  

‎‎وراثت كلاسClass Inheritance -‎

‎براي ايجاد كلاس وراثتي از كلمه كليدي‎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();

--(go to editor for change code and run)

‎‎متد‎super()‎‎ مراجعه به كلاس والد ‎(car)‎ دارد .

‎با فراخواني متد‎super( ) ‎ در متد سازنده ، متد سازنده والد فراخوان ‎ميشود .دراين حالت براي وارث ويژگي و متدهاي والد قابل دسترس ميباشد.

‎وراثت براي قابليت استفاده مجدد كد مفيد است .هنگاميكه كلاس جديدي ايجاد مي شود ، از ويژگيها ‎ومتدهاي يك كلاس موجود استفاده ميگردد.

‎‎دريافت كننده وتنظيم كننده هاGetters and Setters -‎

‎‎كلاسها همچنين اين امكان را ميدهند كه بتوانيد ازآن دريافت داشته ويا آنرا تنظيم كنيد.

‎استفاده از دريافت كننده ها وتنظيم كننده مي تواند هوشمندانه باشد، به خصوص اگر بخواهيدقبل از ‎برگرداندن آنها وياقبل ازتنظيم آنها، كار خاصي با مقدار انجام دهيد.

‎براي افزودن دريافت كننده و تنظيم كننده از كيورد هاي‎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;

--(go to editor for change code and run)

‎‎توجه ـ حتي اگر دريافت كننده متدي باشد، براي بدست آوردن مقدار از پرانتز استفاده نكنيد.

‎نام هاي دريافت كننده و تنظيم كننده نبايد مشابه نام ويژگي باشد .دراين مثال ‎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;

--(go to editor for change code and run)

‎براي استفاده از تنظيم كننده بهمان روالي استفاده كنيدكه مفدار ويژگي را بدون پرانتز تنظيم ‎ميكنيد.

‎‎مثال ـ با استفاده از تنظيم كننده مقدار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;

--(go to editor for change code and run)

‎‎بالا بردنHoisting -‎

‎برخلاف توابع وساير تعاريف جاوااسكريپت، تعاريف كلاس بالا رفتني نيست .اين بدين معني است كه ‎كلاس قبل از استفاده بايد تعريف شده باشد.

‎‎مثال ـ براي نشان دادن جايگاه درست تعريف كلاس

//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")

--(go to editor for change code and run)

‎توجه ـ براي ساير تعريف ها، مانند توابع، وقتي قبل از تعريف ازآن استفاده ميكنيد، خطائي ‎دريافت نميكنيد .چون رفتار پيش فرض جاواسكريپت تعريف را به بالاي اسكريپت مي برد.


Previous >    <Next