Confidențialitate în stil vechi în OOP în JavaScript

Declararea proprietăților și metodelor private prin simbolul # a apărut în JavaScript cu totul recent. Până atunci trebuia să folosim o metodă specială și ingenioasă.

Esența acestei metode constă în faptul că se convenționează că numele proprietăților private și al metodelor ar trebui să înceapă cu simbolul de subliniere. În realitate, aceste nume nu vor fi private, dar suntem de acord că nu le vom folosi din afara clasei.

Să încercăm. Să facem o proprietate privată în acest stil:

javascriptclass User {
  constructor(name) {
    this._name = name;
  }
  
  show() {
    return this._name;
  }
}

Să creăm un obiect al clasei:

javascriptlet user = new User('john', 'smit');

Să apelăm metoda care afișează valoarea proprietății noastre:

javascriptconsole.log(user.show());

Încercarea de a accesa proprietatea din afara clasei nu va duce la o eroare:

javascriptconsole.log(user._name); // nu există eroare
Задание 1

În următorul cod, faceți proprietățile private:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getName() {
    return this.name;
  }
  getSalary() {
    return this.salary;
  }
}
Задание 2

În următorul cod, faceți metoda auxiliară privată:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getSalary() {
    return this.addSign(this.salary);
  }
  
  addSign(num) {
    return num + '
;
  }
}