Privatnost u starom stilu u OOP u JavaScriptu

Deklarisanje privatnih svojstava i metoda preko simbola # pojavilo se u JavaScriptu skoro. Pre toga se moralo koristiti posebnim trikom.

Suština ovog trika je u tome da se postiže dogovor da imena privatnih svojstava i metoda treba da počinju sa simbolom donje crte. Realno takva imena neće biti privatna, ali se dogovaramo da ih nećemo koristiti izvan klase.

Hajde da probamo. Napravićemo privatno svojstvo u ovom stilu:

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

Kreirajmo objekat klase:

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

Pozovimo metod koji prikazuje vrednost našeg svojstva:

javascriptconsole.log(user.show());

Pokušaj da se pristupi svojstvu izvan klase neće dovesti do greške:

javascriptconsole.log(user._name); // nema greške
Задание 1

U sledećem kodu napravite svojstva privatnim:

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

U sledećem kodu napravite pomoćni metod privatnim:

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