Выклік пераазначанага метаду ў ААП у JavaScript
Пры пераазначэнні нашчадак губляе
доступ да пераазначанага метаду
бацькі. Аднак, атрымаць доступ да яго
ўсё роўна можна. Гэта робіцца
з дапамогай ключавога слова super,
якое паказвае на бацькоўскі
клас.
Давайце паглядзім на прыкладзе, калі нам можа спатрэбіцца доступ да бацькоўскага метаду. Няхай у нас ёсць наступны клас-бацька:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Няхай мы ў класе-нашчадку пераазначылі метад бацькі:
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');
}
}
}
У класе Employee выпраўце
спрасціце сетар узросту, выкарыстаўшы
аргінальны метад бацькі.