Privatnost u starom stilu u OOP u JavaScriptu
Deklarisanje privatnih svojstava i metoda
preko simbola # pojavilo se u JavaScriptu
skoro. Pre toga se moralo
koristiti posebnim trikom.
Suština ovog trika je u tome da se postiže dogovor da imena privatnih svojstava i metoda treba da počinju sa simbolom donje crte. Realno takva imena neće biti privatna, ali se dogovaramo da ih nećemo koristiti izvan klase.
Hajde da probamo. Napravićemo privatno svojstvo u ovom stilu:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Kreirajmo objekat klase:
let user = new User('john', 'smit');
Pozovimo metod koji prikazuje vrednost našeg svojstva:
console.log(user.show());
Pokušaj da se pristupi svojstvu izvan klase neće dovesti do greške:
console.log(user._name); // nema greške
U sledećem kodu napravite svojstva privatnim:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
U sledećem kodu napravite pomoćni metod privatnim:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}