OOP-de JavaScript-de geçirilen usulyna çagyryş
Geçirilende, waris ata-klasynyň geçirilen usulyna
ýol tapmaýar. Emma, oňa ýene-de ýol tapmak bolýar.
Bu, ata-klasyny görkezýän super açar sözi
arkaly edilýär.
Ata-usula ýol gerek bolup bilýän mysala göz aýlanyň. Bizde şeýle ata-klas bolsun:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Waris-klasda ata-usuly geçirýändigimizi göz öňünde tutalyň:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Geçirilen usulda, şert ýerine ýetirilende, esasan ata-usulyň kody ýerine ýetirilýändigini görüp bolýar. Bu ýersiz kod gaýtalanmasynyň peýda bolýandygyny görkezýär.
Eger-de ata-usulyny çaklasak, ondan gaçaryp bolar. Geliň, muny edeliň:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // ata-usuly
} else {
throw new Error('student name error');
}
}
}
Aşakdaky kod berlen:
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');
}
}
}
Employee klasynda ýaş setterini düzediň,
ony ýönekeýleşdiriň we ata-usulynyň orisinal
versiýasyny ulanyň.