Privacy in stile vecchio in OOP in JavaScript

Dichiarazione di proprietà e metodi privati tramite il simbolo # è apparso in JavaScript molto recentemente. Prima di allora si doveva utilizzare uno speciale e astuto espediente.

L'essenza di questo espediente è stabilire una convenzione per cui i nomi delle proprietà e dei metodi privati devono iniziare con il carattere underscore. In realtà tali nomi non saranno privati, ma ci accordiamo sul fatto che non li utilizzeremo dall'esterno della classe.

Proviamo. Creiamo una proprietà privata in questo stile:

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

Creiamo un oggetto della classe:

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

Chiamiamo il metodo che visualizza il valore della nostra proprietà:

javascriptconsole.log(user.show());

Il tentativo di accedere alla proprietà dall'esterno della classe non causerà un errore:

javascriptconsole.log(user._name); // nessun errore
Задание 1

Nel codice seguente, rendete le proprietà private:

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

Nel codice seguente, rendete il metodo ausiliario privato:

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