Даъват кардани методи қайтатартибдодашуда дар ООП дар JavaScript
Вақте ки методи қайтатартиб дода мешавад,
фарзанд дастрасӣ ба методи қайтатартибдодашудаи
волидайнро аз даст медиҳад. Аммо, боз ҳам
методи волидайнро даъват кардан мумкин аст.
Ин бо истифода аз калимаи калидии super
анҷом дода мешавад,
ки ба сinf волидайн ишора мекунад.
Биёед мисолеро дида бароем, ки вақте ба мо дастрасӣ ба методи волидайн лозим меояд. Фарз мекунем, ки мо сinf волидайни зеринро дорем:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Фарз мекунем, ки мо дар сinf фарзанд методи волидайнро қайтатартиб додем:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Қайд кардан мумкин аст, ки дар методи қайтатартибдодашуда дар вақти иҷро шарти қулай коди методи волидайн иҷро мешавад. Натиҷа дубора кардани коди нолозим аст.
Аз ин дубора кардан метавон халос шуд, агар методи волидайнро даъват кард. Биёед инро анҷом диҳем:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // методи волидайн
} else {
throw new Error('student name error');
}
}
}
Коди зерин дода шудааст:
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');
}
}
}
Дар сinf Employee ислоҳ кунед
ва тарроҳии синфи синну солро содда кунед, истифода бурда
методи аслии волидайн.