Sinflarda vorislik
Klass vorisligi
Klass merosini yaratish uchun extends kalit so‘zidan foydalaning.
Class merosi bilan yaratilgan class boshqa sinfdan barcha usullarni meros qilib oladi:
Misol
"Car" klassidan metodlarni meros qilib oladigan "Model" nomli klass yarating:
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() usuli ota-onaga tegishli
class.
super() usulini chaqirish orqali
konstruktor usuli, biz ota-onaning konstruktor usulini chaqiramiz va unga kirish huquqiga ega bo‘lamiz
ota-onaning xususiyatlari va metodlari.
Getter va setterlar
Sinflar, shuningdek, oluvchilar va o‘rnatuvchilardan foydalanishga imkon beradi.
Xususiyatlaringiz uchun qabul qiluvchilar va sozlagichlardan foydalanish oqilona bo‘lishi mumkin, ayniqsa ularni qaytarishdan oldin yoki ularni o‘rnatishdan oldin qiymat bilan maxsus biror narsa qilishni istasangiz.
Sinfga qabul qiluvchilar va sozlagichlarni qo‘shish uchun
get va set kalit so‘zlaridan foydalaning.
Misol
"carname" xususiyati uchun getter va setter yarating:
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;
Getter/setter usulining nomi xususiyat nomi bilan bir xil bo‘lishi mumkin emas, bu holda carname.
Ko‘pgina dasturchilar qabul qiluvchi/setterni haqiqiy xususiyatdan ajratish uchun xususiyat nomidan oldin _ pastki chiziq belgisidan foydalanadilar:
Misol
Qabul qiluvchi/setterni haqiqiy xususiyatdan ajratish uchun pastki chiziq belgisidan foydalanishingiz mumkin:
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;
Sozlagichdan foydalanish uchun qavslarsiz xususiyat qiymatini o‘rnatganingizdek bir xil sintaksisdan foydalaning:
Misol
Avtomobil nomini "Volvo" ga o‘zgartirish uchun sozlash moslamasidan foydalaning:
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;
Ko‘tarish (Hoisting)
Funksiyalar va boshqa JavaScript deklaratsiyasidan farqli o‘laroq, class deklaratsiyasi ko‘tarilmaydi.
Bu shuni anglatadiki, siz undan foydalanishdan oldin sinfni e’lon qilishingiz kerak:
Misol
//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")
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
