Privátnosť v starom štýle v OOP v JavaScripte

Deklarácia súkromných vlastností a metód cez symbol # sa objavila v JavaScripte celkom nedávno. Predtým sa muselo používať špeciálny trik.

Podstatou tohto triku je, že sa uzatvorí dohoda o tom, že názvy súkromných vlastností a metód by mali začínať symbolom podčiarkníka. Reálne takéto názvy nebudú súkromné, ale dohodneme sa o tom, že nebudeme ich používať zvonku triedy.

Skúsme to. Urobme súkromnú vlastnosť v takomto štýle:

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

Vytvorme objekt triedy:

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

Zavolajme metódu, ktorá vypíše hodnotu našej vlastnosti:

javascriptconsole.log(user.show());

Pokus o prístup k vlastnosti zvonku triedy nevyvolá chybu:

javascriptconsole.log(user._name); // žiadna chyba
Задание 1

V nasledujúcom kóde urobte vlastnosti súkromnými:

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

V nasledujúcom kóde urobte pomocnú metódu súkromnou:

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