Confidențialitate în stil vechi în OOP în JavaScript
Declararea proprietăților și metodelor private
prin simbolul # a apărut în JavaScript
cu totul recent. Până atunci trebuia să
folosim o metodă specială și ingenioasă.
Esența acestei metode constă în faptul că se convenționează că numele proprietăților private și al metodelor ar trebui să înceapă cu simbolul de subliniere. În realitate, aceste nume nu vor fi private, dar suntem de acord că nu le vom folosi din afara clasei.
Să încercăm. Să facem o proprietate privată în acest stil:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Să creăm un obiect al clasei:
let user = new User('john', 'smit');
Să apelăm metoda care afișează valoarea proprietății noastre:
console.log(user.show());
Încercarea de a accesa proprietatea din afara clasei nu va duce la o eroare:
console.log(user._name); // nu există eroare
În următorul cod, faceți proprietățile private:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
În următorul cod, faceți metoda auxiliară privată:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}