Privaciteit in oude stijl in OOP in JavaScript
Het declareren van privé-eigenschappen en methoden
via het symbool # verscheen pas recentelijk
in JavaScript. Daarvoor moest men gebruik maken
van een speciale, ingenieuze techniek.
De essentie van deze techniek is dat er een afspraak wordt gemaakt dat de namen van privé-eigenschappen en methoden moeten beginnen met een underscore. In werkelijkheid zijn deze namen niet privé, maar we spreken af dat we ze niet van buiten de klasse zullen gebruiken.
Laten we het proberen. Laten we een privé-eigenschap maken in deze stijl:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Laten we een object van de klasse aanmaken:
let user = new User('john', 'smit');
Laten we de methode aanroepen die de waarde van onze eigenschap weergeeft:
console.log(user.show());
Een poging om de eigenschap van buitenaf te benaderen leidt niet tot een fout:
console.log(user._name); // geen fout
Maak in de volgende code de eigenschappen privé:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Maak in de volgende code de helpermethode privé:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + ' euro';
}
}