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:
javascriptclass User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Loome klassi objekti:
javascriptlet user = new User('john', 'smit');
Kutsume meetodi, mis kuvab meie omaduse väärtuse:
javascriptconsole.log(user.show());
Katse pöörduda omaduse poole väljaspool klassi ei too kaasa viga:
javascriptconsole.log(user._name); // viga ei ole
Задание 1
Järgmises koodis tehke omadused privaatseteks:
javascriptclass Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Задание 2
Järgmises koodis tehke abistav meetod privaatseks:
javascriptclass Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '€';
}
}