Privātums vecajā stilā OOP JavaScript

Privāto īpašību un metožu deklarēšana caur simbolu # parādījās JavaScript visai nesen. Pirms tam nācās izmantot īpašu viltīgu paņēmienu.

Šī paņēmiena būtība ir tāda, ka tiek noslēgts vienošanās, ka privāto īpašību un metožu nosaukumiem jāsākas ar apakšsvītras simbolu. Īstenībā šādi nosaukumi nebūs privāti, bet mēs vienojamies, ka neizmantosim tos no ārpuses klases.

Pamēģināsim. Izveidosim privātu īpašību šajā stilā:

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

Izveidosim klases objektu:

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

Izsauksim metodi, kas izvada vērtību mūsu īpašības:

javascriptconsole.log(user.show());

Mēģinājums piekļūt īpašībai no ārpuses klases neradīs kļūdu:

javascriptconsole.log(user._name); // kļūdas nav
Задание 1

Nākamajā kodā padariet īpašības privātas:

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

Nākamajā kodā padariet palīgmetodi privātu:

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