Privacidad al estilo antiguo en POO en JavaScript
La declaración de propiedades y métodos privados
mediante el símbolo # apareció en JavaScript
hace muy poco. Hasta entonces, había que
utilizar un truco especial y astuto.
La esencia de este truco es que se establece un convenio de que los nombres de las propiedades y métodos privados deben comenzar con el símbolo de subrayado. Realmente estos nombres no serán privados, pero acordamos que no los usaremos desde fuera de la clase.
Probemos. Hagamos una propiedad privada en este estilo:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Creemos un objeto de la clase:
let user = new User('john', 'smit');
Llamemos al método que muestra el valor de nuestra propiedad:
console.log(user.show());
El intento de acceder a la propiedad desde fuera de la clase no dará error:
console.log(user._name); // no hay error
En el siguiente código, haga las propiedades privadas:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
En el siguiente código, haga el método auxiliar privado:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}