Confidentialité à l'ancienne en POO en JavaScript
La déclaration de propriétés et méthodes privées
via le symbole # est apparue en JavaScript
très récemment. Avant cela, il fallait
utiliser une technique spéciale et astucieuse.
L'essence de cette technique est de conclure une convention selon laquelle les noms des propriétés privées et des méthodes doivent commencer par le symbole de soulignement. En réalité, ces noms ne seront pas privés, mais nous convenons que nous ne les utiliserons pas de l'extérieur de la classe.
Essayons. Créons une propriété privée dans ce style :
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Créons un objet de la classe :
let user = new User('john', 'smit');
Appelons la méthode affichant la valeur de notre propriété :
console.log(user.show());
Une tentative d'accéder à la propriété depuis l'extérieur de la classe ne générera pas d'erreur :
console.log(user._name); // pas d'erreur
Dans le code suivant, rendez les propriétés privées :
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Dans le code suivant, rendez la méthode utilitaire privée :
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}