JavaScript Klas Erfenis
Klas Erfenis
Om 'n klaserfenis te skep, gebruik die extends
sleutelwoord.
'n Klas wat met 'n klasoorerwing geskep word, erf al die metodes van 'n ander klas:
Voorbeeld
Skep 'n klas met die naam "Model" wat die metodes van die "Car" klas sal erf:
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();
Die super()
metode verwys na die ouerklas.
Deur die super()
metode in die konstruktormetode te noem, roep ons die ouer se konstruktormetode en kry ons toegang tot die ouer se eienskappe en metodes.
Oorerwing is nuttig vir kode herbruikbaarheid: hergebruik eienskappe en metodes van 'n bestaande klas wanneer jy 'n nuwe klas skep.
Getters en Setters
Klasse laat jou ook toe om getters en setters te gebruik.
Dit kan slim wees om getters en setters vir jou eiendomme te gebruik, veral as jy iets spesiaals met die waarde wil doen voordat jy dit terugbesorg, of voordat jy dit stel.
Om getters en setters in die klas by te voeg, gebruik die
get
en set
sleutelwoorde.
Voorbeeld
Skep 'n getter en 'n opsteller vir die "carname"-eienskap:
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;
Let wel: selfs al is die getter 'n metode, gebruik jy nie hakies wanneer jy die eiendomswaarde wil kry nie.
Die naam van die getter/setter-metode kan nie dieselfde wees as die naam van die eiendom nie, in hierdie geval carname
.
Baie programmeerders gebruik 'n onderstreepkarakter _
voor die eienskapnaam om die getter/setter van die werklike eiendom te skei:
Voorbeeld
Jy kan die onderstreepkarakter gebruik om die getter/setter van die werklike eiendom te skei:
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;
Om 'n opsteller te gebruik , gebruik dieselfde sintaksis as wanneer jy 'n eienskapwaarde stel, sonder hakies:
Voorbeeld
Gebruik 'n opsteller om die karnaam na "Volvo" te verander:
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;
Hys
Anders as funksies en ander JavaScript-verklarings, word klasverklarings nie opgehef nie.
Dit beteken dat jy 'n klas moet verklaar voordat jy dit kan gebruik:
Voorbeeld
//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")
Let wel: Vir ander verklarings, soos funksies, sal jy NIE 'n fout kry wanneer jy dit probeer gebruik voordat dit verklaar word nie, want die verstekgedrag van JavaScript-verklarings is besig om te hys (skuif die verklaring na bo).