Պաշտպանված մեթոդները OOP-ում JavaScript-ում

Մասնավոր մեթոդները չեն ժառանգվում և տեսանելի չեն դասի սահմաններից դուրս: Սակայն երբեմն անհրաժեշտ են մեթոդներ, որոնք ժառանգվում են, բայց տեսանելի չեն դասի սահմաններից դուրս: Նման մեթոդները կոչվում են պաշտպանված (protected): Ցավոք, JavaScript-ը չի աջակցում նման մեթոդներ:

Ուստի ես առաջարկում եմ ներմուծել որոշակի համաձայնություն, որը թույլ կտա ստեղծել նման մեթոդներ: Մենք կսկսենք նման մեթոդների անունները underscore-ով: Փաստորեն մենք օգտագործում ենք մասնավոր մեթոդների հին, ընդհանուր ընդունված համաձայնությունը: Միայն թե նման մեթոդները մենք կանվանենք պաշտպանված որպես նշան, որ դրանք ժառանգվում են, բայց մենք չենք օգտագործի դրանք դասի սահմաններից դուրս: Ի դեպ, հենց այդպես դրանք և օգտագործվում են ըստ հին համաձայնության:

Այսպիսով, եկեք գրենք ծնողական դաս պաշտպանված մեթոդով.

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this._capeFirst(this.name);
  }
  
  _capeFirst(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Օգտագործենք այս պաշտպանված մեթոդը ժառանգ դասում.

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this._capeFirst(this.surn);
  }
}
Задание 1

Հետևյալ կոդում օգնող մեթոդը դարձրեք պաշտպանված.

javascriptclass 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;
  }
}