Kald af overstyret metode i OOP i JavaScript
Ved overstyring mister afkommet
adgang til den overstyrede metode
fra forælderen. Det er dog stadig muligt
at få adgang til den. Dette gøres
ved hjælp af nøgleordet super,
som refererer til forælderklassen.
Lad os se på et eksempel, hvor vi muligvis har brug for adgang til forælderens metode. Antag, at vi har følgende forælderklasse:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Antag, at vi i afkomklassen har overstyret forælderens metode:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Det kan bemærkes, at i den overstyrede metode, når betingelsen er opfyldt, udføres essentielt koden fra forælderens metode. Dette resulterer i unødvendig kodeduplikering.
Dette kan undgås ved at kalde forælderens metode. Lad os gøre dette:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // forælderens metode
} else {
throw new Error('student name error');
}
}
}
Følgende kode er givet:
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 rette
og forenkle setteren for alder ved at bruge
forælderens oprindelige metode.