Privātums vecajā stilā OOP JavaScript
Privāto īpašību un metožu deklarēšana
caur simbolu # parādījās JavaScript
visai nesen. Pirms tam nācās
izmantot īpašu viltīgu
paņēmienu.
Šī paņēmiena būtība ir tāda, ka tiek noslēgts vienošanās, ka privāto īpašību un metožu nosaukumiem jāsākas ar apakšsvītras simbolu. Īstenībā šādi nosaukumi nebūs privāti, bet mēs vienojamies, ka neizmantosim tos no ārpuses klases.
Pamēģināsim. Izveidosim privātu īpašību šajā stilā:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Izveidosim klases objektu:
let user = new User('john', 'smit');
Izsauksim metodi, kas izvada vērtību mūsu īpašības:
console.log(user.show());
Mēģinājums piekļūt īpašībai no ārpuses klases neradīs kļūdu:
console.log(user._name); // kļūdas nav
Nākamajā kodā padariet īpašības privātas:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Nākamajā kodā padariet palīgmetodi privātu:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '€';
}
}