Ventajas de los setters y getters en POO en JavaScript
En la lección anterior, creamos un getter y un setter para cada propiedad. Puede surgir la pregunta, ¿para qué son necesarias tales complejidades, si de hecho el mismo efecto se puede lograr haciendo las propiedades públicas, no privadas.
El asunto es que los getters y setters tienen una ventaja: antes de acceder a la propiedad se pueden realizar algunas comprobaciones. Por ejemplo, en nuestro caso, al escribir el nombre y el apellido podemos verificar que el nuevo valor no sea una cadena vacía:
class User {
#name;
#surn;
setName(name) {
if (name.length > 0) {
this.#name = name;
} else {
throw new Error('name is incorrect');
}
}
setSurn(surn) {
if (surn.length > 0) {
this.#surn = surn;
} else {
throw new Error('surn is incorrect');
}
}
getName() {
return this.#name;
}
getSurn() {
return this.#surn;
}
}
Comprobemos cómo funciona esto. Primero, creemos un objeto de la clase:
let user = new User;
Ahora intentemos escribir un valor correcto:
user.setName('john');
Y ahora intentemos escribir uno incorrecto:
user.setName(''); // error
En la clase Employee, en el setter
de la edad, realice una verificación para asegurarse de que
la edad debe estar
entre 0 y 120.
En la clase Employee, en el getter
del salario, hágalo de modo que
al leer el salario, al final de su
valor se agregue el signo de dólar.