Vantagens de setters e getters em POO em JavaScript
Na lição anterior, criamos um getter e um setter para cada propriedade. Pode surgir a pergunta: por que são necessárias tais complexidades, se praticamente o mesmo efeito pode ser alcançado tornando as propriedades públicas em vez de privadas?
A questão é que os getters e setters têm uma vantagem: antes de acessar uma propriedade, algumas verificações podem ser executadas. Por exemplo, no nosso caso, ao gravar o nome e sobrenome, podemos verificar que o novo valor não é uma string vazia:
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;
}
}
Vamos verificar como isso funciona. Primeiro, vamos criar um objeto da classe:
let user = new User;
Agora vamos tentar gravar um valor correto:
user.setName('john');
E agora vamos tentar gravar um valor incorreto:
user.setName(''); // erro
Na classe Employee, no setter
da idade, faça uma verificação para
garantir que a idade deve estar
entre 0 e 120.
Na classe Employee, no getter
do salário, faça com que
ao ler o salário, um símbolo de dólar
seja adicionado ao final de seu
valor.