Zasebnost v starem slogu v OOP v JavaScript
Deklaracija zasebnih lastnosti in metod
prek simbola # se je v JavaScriptu
pojavila šele pred kratkim. Pred tem so morali
uporabljati posebno zapleteno
tehniko.
Bistvo te tehnike je v sklenitvi dogovora, da se morajo imena zasebnih lastnosti in metod začeti s podčrtajem. Dejansko ta imena ne bodo zasebna, vendar se dogovorimo, da jih ne bomo uporabljali zunaj razreda.
Poskusimo. Naredimo zasebno lastnost v tem slogu:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Ustvarimo objekt razreda:
let user = new User('john', 'smit');
Pokličimo metodo, ki prikaže vrednost naše lastnosti:
console.log(user.show());
Poskus dostopa do lastnosti od zunaj razreda ne bo povzročil napake:
console.log(user._name); // ni napake
V naslednji kodi naredite lastnosti zasebne:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
V naslednji kodi naredite pomožno metodo zasebno:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '€';
}
}