Yksityisyys vanhanaikaisessa OOP:ssa JavaScriptissä
Yksityisten ominaisuuksien ja menetelmien määrittely
symbolin # kautta ilmestyi JavaScriptiin
vasta äskettäin. Ennen sitä oli pakko
käyttää erikoista ovelaa
menetelmää.
Tämän menetelmän ydin on sopia, että yksityisten ominaisuuksien ja menetelmien nimien on alettava alaviivalla. Todellisuudessa tällaiset nimet eivät ole yksityisiä, mutta sovimme, että emme käytä niitä luokan ulkopuolelta.
Kokeillaan. Tehdään yksityinen ominaisuus tällä tyylillä:
javascriptclass User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Luodaan luokan olio:
javascriptlet user = new User('john', 'smit');
Kutsutaan metodia, joka tulostaa ominaisuutemme arvon:
javascriptconsole.log(user.show());
Yritys viitata ominaisuuteen luokan ulkopuolelta ei aiheuta virhettä:
javascriptconsole.log(user._name); // ei virhettä
Задание 1
Tee seuraavassa koodissa ominaisuudet yksityisiksi:
javascriptclass Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Задание 2
Tee seuraavassa koodissa apu- metodi yksityiseksi:
javascriptclass Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}