Beskyttede metoder i OOP i JavaScript

Private metoder arves ikke og er ikke synlige utenfor klassen. Noen ganger trengs det imidlertid metoder som arves, men ikke er synlige utenfor klassen. Slike metoder kalles beskyttede (protected). JavaScript støtter dessverre ikke slike metoder.

Derfor foreslår jeg å innføre en viss konvensjon som tillater å opprette slike metoder. La oss starte navnene på slike metoder med understrek. Faktisk bruker vi den gamle allment aksepterte konvensjonen om private metoder. Bare vi kaller slike metoder beskyttede for å indikere at de arves, men vi vil ikke bruke dem utenfor. Forresten, det er slik de brukes i henhold til den gamle konvensjonen.

Så la oss skrive en foreldreklasse med en beskyttet metode:

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

La oss bruke denne beskyttede metoden i en underklasse:

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

I følgende kode, gjør hjelpemetoden beskyttet:

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