Абароненыя метады ў ААП у JavaScript
Прыватныя метады не наследуются і не бачныя звонку класа. Часам, аднак, патрэбныя метады, якія наследуются, але не бачныя звонку класа. Такія метады называюцца абароненымі (protected). JavaScript, на жаль, не падтрымлівае такiх метадаў.
Таму я прапаную ўвесці некаторае пагадненне, якое дазваляе ствараць такія метады. Будзем пачынаць імёны такiх метадаў праз падкрэслiванне. Фактычна мы выкарыстоўваем старое агульнапрынятае пагадненне аб закрытых метадах. Toлькі называем такія метады абароненымі у знак таго, што яны наследуются, але мы не будзем выкарыстоўваць iх звонку. Дарэчы, менавіта так яны і ўжываюцца па старажытным пагадненні.
Такім чынам, давайце напiшам клас-бацьку з абароненым метадам:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Скарыстаемся гэтым абароненым метадам у класе-нашчадку:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
У наступным кодзе зрабiце дапаможны метад абароненым:
class User {
setName(name) {
if (this.notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this.notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}