Pārrakstītas metodes izsaukšana OOP JavaScript
Pārrakstot metodi, bērns zaudē
piekļuvi pārrakstītajai vecāka metodei.
Tomēr, piekļūt tai joprojām ir iespējams.
To var izdarīt, izmantojot atslēgvārdu
super,
kas norāda uz vecāka klasi.
Apskatīsim piemēru, kad mums varētu būt nepieciešama piekļuve vecāka metodei. Pieņemsim, ka mums ir šāda vecāka klase:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Pieņemsim, ka mēs bērna klasē esam pārrakstījuši vecāka metodi:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Var ievērot, ka pārrakstītajā metodē, ja nosacījums ir izpildīts, faktiski tiek izpildīts vecāka metodes kods. Rezultātā rodas nevēlams koda dublēšanās.
No tā var atbrīvoties, ja izsauc vecāka metodi. Darīsim tā:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // vecāka metode
} else {
throw new Error('student name error');
}
}
}
Dots šāds kods:
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');
}
}
}
Klasē Employee izlabojiet
vienkāršojiet vecuma setteri, izmantojot
oriģinālo vecāka metodi.