٪۴۰ تخفیف تابستانه شروع شد! بزرگترین حراج سال ما

به ما بپیوندید

آموزش وراثت کلاس JavaScript

وراثت طبقاتی برای ایجاد وراثت کلاس ، از extends کلمه کلیدی استفاده کنید . یک کلاس ایجاد شده با یک وراثت کلاس ، تمام روش ها را از یک کلاس دیگر به ارث می برد: مثال یک کلاس به نام “Model” ایجاد کنید که…

محمد یوسفی

27 جولای 2021

وراثت طبقاتی

برای ایجاد وراثت کلاس ، از 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()متد در روش سازنده ، ما روش سازنده والد را فراخوانی می کنیم و به خصوصیات و روشهای والدین دسترسی پیدا می کنیم.

وراثت برای قابلیت استفاده مجدد کد مفید است: هنگام ایجاد کلاس جدید ، از خصوصیات و روش های کلاس موجود استفاده مجدد کنید.


گیرنده ها و تنظیم کننده ها

کلاسها همچنین به شما امکان می دهد از گیرنده ها و تنظیم کننده ها استفاده کنید.

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

برای افزودن گیرنده ها و تنظیم کننده ها در کلاس ، از کلمات کلیدی getو استفاده کنید set.

مثال

برای ویژگی “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 / setter در این حالت نمی تواند با نام خاصیت یکی باشد carname.

 

بسیاری از برنامه نویسان _ برای جدا کردن گیرنده / تنظیم کننده از ویژگی واقعی ، از یک شخصیت زیر خط دار قبل از نام خاصیت استفاده می کنند:

مثال

برای جدا کردن گیرنده / تنظیم کننده از ویژگی واقعی می توانید از کاراکتر زیرخط استفاده کنید:

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;

بلند کردن

برخلاف توابع و سایر اعلامیه های جاوا اسکریپت ، اعلامیه های کلاس بلند نمی شوند.

این بدان معنی است که شما باید کلاس را قبل از استفاده از آن اعلام کنید:

مثال

//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 بالا می رود (انتقال اعلان به بالا).

منبع

مطالب مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها