Privatumas senuoju stiliumi OOP JavaScripte
Privačių savybių ir metodų deklaravimas
per simbolį # atsirado JavaScripte
visai neseniai. Prieš tai reikėjo
naudytis specialiu gudriu
metodu.
Šio metodo esmė ta, kad sudaroma sutartis, kad privačių savybių ir metodų pavadinimai turėtų prasidėti pabraukimo simboliu. Realiai tokie pavadinimai nebus privatūs, bet mes susitariame, kad nenaudosime jų iš už klasės ribų.
Pabandykime. Sukurkime privačią savybę tokiu stiliumi:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Sukurkime klasės objektą:
let user = new User('john', 'smit');
Iškvieskime metodą, rodantį reikšmę mūsų savybės:
console.log(user.show());
Bandymas kreiptis į savybę iš išorės klasės nesukels klaidos:
console.log(user._name); // klaidos nėra
Toliau pateiktame kode padarykite savybes privačiomis:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Toliau pateiktame kode padarykite pagalbinį metodą privačiu:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}