Prywatność w starym stylu w OOP w JavaScript

Deklarowanie prywatnych właściwości i metod poprzez symbol # pojawiło się w JavaScript całkiem niedawno. Wcześniej trzeba było używać specjalnej, sprytnej sztuczki.

Istota tej sztuczki polega na uzgodnieniu, że nazwy prywatnych właściwości i metod powinny zaczynać się od znaku podkreślenia. W rzeczywistości takie nazwy nie będą prywatne, ale umawiamy się, że nie będziemy ich używać na zewnątrz klasy.

Spróbujmy. Zróbmy prywatną właściwość w tym stylu:

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

Stwórzmy obiekt klasy:

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

Wywołajmy metodę, która wyświetla wartość naszej właściwości:

javascriptconsole.log(user.show());

Próba odwołania się do właściwości z zewnątrz klasy nie spowoduje błędu:

javascriptconsole.log(user._name); // nie ma błędu
Задание 1

W następnym kodzie uczynij właściwości prywatnymi:

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

W następnym kodzie uczynij metodę pomocniczą prywatną:

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