Պաշտպանված մեթոդները OOP-ում JavaScript-ում
Մասնավոր մեթոդները չեն ժառանգվում և տեսանելի չեն դասի սահմաններից դուրս: Սակայն երբեմն անհրաժեշտ են մեթոդներ, որոնք ժառանգվում են, բայց տեսանելի չեն դասի սահմաններից դուրս: Նման մեթոդները կոչվում են պաշտպանված (protected): Ցավոք, JavaScript-ը չի աջակցում նման մեթոդներ:
Ուստի ես առաջարկում եմ ներմուծել որոշակի համաձայնություն, որը թույլ կտա ստեղծել նման մեթոդներ: Մենք կսկսենք նման մեթոդների անունները underscore-ով: Փաստորեն մենք օգտագործում ենք մասնավոր մեթոդների հին, ընդհանուր ընդունված համաձայնությունը: Միայն թե նման մեթոդները մենք կանվանենք պաշտպանված որպես նշան, որ դրանք ժառանգվում են, բայց մենք չենք օգտագործի դրանք դասի սահմաններից դուրս: Ի դեպ, հենց այդպես դրանք և օգտագործվում են ըստ հին համաձայնության:
Այսպիսով, եկեք գրենք ծնողական դաս պաշտպանված մեթոդով.
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);
}
}
Հետևյալ կոդում օգնող մեթոդը դարձրեք պաշտպանված.
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;
}
}