Privaatsus vanastiilis OOP-s JavaScriptis
Privaatsete omaduste ja meetodite deklareerimine
sümboli # kaudu ilmus JavaScripti
alles hiljuti. Enne seda tuli kasutada
spetsiaalset keerulist
meetodit.
Selle meetodi olemus seisneb kokkuleppes, et privaatsete omaduste ja meetodite nimed peavad algama allkriipsu sümboliga. Tegelikult ei ole sellised nimed privaatsed, aga me kokku leppime, et me ei kasuta neid väljaspool klassi.
Proovime seda. Teeme privaatse omaduse selles stiilis:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Loome klassi objekti:
let user = new User('john', 'smit');
Kutsume meetodi, mis kuvab meie omaduse väärtuse:
console.log(user.show());
Katse pöörduda omaduse poole väljaspool klassi ei too kaasa viga:
console.log(user._name); // viga ei ole
Järgmises koodis tehke omadused privaatseteks:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Järgmises koodis tehke abistav meetod privaatseks:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '€';
}
}