Privátnosť v starom štýle v OOP v JavaScripte
Deklarácia súkromných vlastností a metód
cez symbol # sa objavila v JavaScripte
celkom nedávno. Predtým sa muselo
používať špeciálny trik.
Podstatou tohto triku je, že sa uzatvorí dohoda o tom, že názvy súkromných vlastností a metód by mali začínať symbolom podčiarkníka. Reálne takéto názvy nebudú súkromné, ale dohodneme sa o tom, že nebudeme ich používať zvonku triedy.
Skúsme to. Urobme súkromnú vlastnosť v takomto štýle:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Vytvorme objekt triedy:
let user = new User('john', 'smit');
Zavolajme metódu, ktorá vypíše hodnotu našej vlastnosti:
console.log(user.show());
Pokus o prístup k vlastnosti zvonku triedy nevyvolá chybu:
console.log(user._name); // žiadna chyba
V nasledujúcom kóde urobte vlastnosti súkromnými:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
V nasledujúcom kóde urobte pomocnú metódu súkromnou:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}