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:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Creiamo un oggetto della classe:
let user = new User('john', 'smit');
Chiamiamo il metodo che visualizza il valore della nostra proprietà:
console.log(user.show());
Il tentativo di accedere alla proprietà dall'esterno della classe non causerà un errore:
console.log(user._name); // nessun errore
Nel codice seguente, rendete le proprietà private:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Nel codice seguente, rendete il metodo ausiliario privato:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}