Memanggil Kaedah Terlebih Dahulu dalam OOP di JavaScript
Apabila menindih kaedah, kelas anak akan kehilangan
akses kepada kaedah induk yang telah ditindih.
Walau bagaimanapun, akses kepadanya masih boleh
diperolehi. Ini dilakukan dengan menggunakan kata kunci
super, yang merujuk kepada kelas induk.
Mari kita lihat contoh di mana kita mungkin memerlukan akses kepada kaedah induk. Katakan kita mempunyai kelas induk berikut:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Katakan kita dalam kelas anak menindih kaedah induk:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Boleh diperhatikan bahawa dalam kaedah yang ditindih, jika syarat dipenuhi, kod yang dilaksanakan sebenarnya adalah kod kaedah induk. Ini mengakibatkan penduaan kod yang tidak diperlukan.
Kita boleh menghapuskan penduaan ini dengan memanggil kaedah induk. Mari lakukan ini:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // kaedah induk
} else {
throw new Error('student name error');
}
}
}
Diberi kod berikut:
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');
}
}
}
Dalam kelas Employee, betulkan dan
permudahkan penetap umur (setter) dengan menggunakan
kaedah induk asal.