Privátnost ve starém stylu v OOP v JavaScriptu
Definice privátních vlastností a metod
pomocí symbolu # se v JavaScriptu
objevila teprve nedávno. Předtím jsme museli
používat speciální trik.
Podstatou tohoto triku je dohoda, že názvy privátních vlastností a metod musí začínat symbolem podtržítka. Ve skutečnosti tyto názvy nebudou privátní, ale dohodneme se, že je nebudeme používat zvenčí třídy.
Zkusme to. Vytvořme privátní vlastnost v tomto stylu:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Vytvořme objekt třídy:
let user = new User('john', 'smit');
Zavolejme metodu, která zobrazí hodnotu naší vlastnosti:
console.log(user.show());
Pokus o přístup k vlastnosti zvenčí třídy nepovede k chybě:
console.log(user._name); // žádná chyba
V následujícím kódu udělejte vlastnosti privátními:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
V následujícím kódu udělejte pomocnou metodu privátní:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + ' Kč';
}
}