Å kalle en overstyrt metode i OOP i JavaScript
Ved overstyring mister barnet
tilgang til den overstyrte metoden
til forelderen. Imidlertid er det
fremdeles mulig å få tilgang til den.
Dette gjøres ved hjelp av nøkkelordet
super,
som peker på forelderklassen.
La oss se på et eksempel når vi kan trenge tilgang til forelderens metode. La oss si at vi har følgende forelderklasse:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
La oss si at vi i barnetklassen har overstyrt forelderens metode:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Man kan legge merke til at i den overstyrte metoden, når betingelsen er oppfylt, blir koden til forelderens metode faktisk utført. Dette resulterer i unødvendig kodeduplisering.
Vi kan bli kvitt den ved å kalle forelderens metode. La oss gjøre det:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // forelderens metode
} else {
throw new Error('student name error');
}
}
}
Følgende kode er gitt:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
} else {
throw new Error('need age less 120');
}
}
}
I klassen Employee skal du
forenkle alderssetteren ved å bruke
den originale metoden til forelderen.