Privatumas senuoju stiliumi OOP JavaScripte

Privačių savybių ir metodų deklaravimas per simbolį # atsirado JavaScripte visai neseniai. Prieš tai reikėjo naudytis specialiu gudriu metodu.

Šio metodo esmė ta, kad sudaroma sutartis, kad privačių savybių ir metodų pavadinimai turėtų prasidėti pabraukimo simboliu. Realiai tokie pavadinimai nebus privatūs, bet mes susitariame, kad nenaudosime jų iš už klasės ribų.

Pabandykime. Sukurkime privačią savybę tokiu stiliumi:

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

Sukurkime klasės objektą:

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

Iškvieskime metodą, rodantį reikšmę mūsų savybės:

javascriptconsole.log(user.show());

Bandymas kreiptis į savybę iš išorės klasės nesukels klaidos:

javascriptconsole.log(user._name); // klaidos nėra
Задание 1

Toliau pateiktame kode padarykite savybes privačiomis:

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

Toliau pateiktame kode padarykite pagalbinį metodą privačiu:

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