Isso eh uma forma de tornar um atributo json editável ou não e ainda permite adicionar lógica. Quando vc cria um json, com esse:
var obj = {
nome: 'Teste'
};
Você poderá alterar o atributo nome livremente.
Ao utilizar como sendo um getter, vc impede que esse atributo seja diretamente alterado, além de permitir que seja colocado alguma lógica no mesmo, e ainda sendo acessado como sendo um atributo e não como uma função. Veja:
var obj = {
nome: 'Fulano',
sobrenome: 'da Silva',
get nomeCompleto() {
return this.nome + ' ' + this.sobrenome;
}
};
// Tentando alterar o atributo "nomeCompleto"
obj.nomeCompleto = 'Outro nome qualquer'; // essa alteração não irá acontecer
console.log(obj.nomeCompleto); // Imprime "Fulano da Silva"
No caso de um atributo setter, vc terá a capacidade de aplicar uma lógica quando o atributo for setado.
var obj = {
nome: 'Fulano',
sobrenome: 'da Silva',
get nomeCompleto() {
return this.nome + ' ' + this.sobrenome;
},
set nomeCompleto(nomeCompleto) {
let tmp = nomeCompleto.split(' ');
this.nome = tmp[0];
this.sobrenome = tmp[1];
}
};
console.log(obj.nomeCompleto); // "Fulano da Silva"
obj.nomeCompleto = 'Algum nome';
console.log(obj.nome); // "Algum"
console.log(obj.sobrenome); // "nome"
console.log(obj.nomeCompleto); // "Algum nome"
1 curtida