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 :
javascriptclass User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Créons un objet de la classe :
javascriptlet user = new User('john', 'smit');
Appelons la méthode affichant la valeur de notre propriété :
javascriptconsole.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 :
javascriptconsole.log(user._name); // pas d'erreur
Dans le code suivant, rendez les propriétés privées :
javascriptclass 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 :
javascriptclass Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}