Olá Daniel, tudo bem com você?
Você está correto sim, para acessarmos um atributo privado através do console.log
, será necessário criarmos os métodos manipuladores, métodos getter
e setter
.
Semelhante ao Python, o JavaScript também possui os métodos getter
e setter
, que serão responsáveis por capturar um valor de um atributo privado e atribuir valor a um atributo privado respectivamente. Usaremos as palavras-chave get
e set
para transformar o método da classe em um método do tipo getter
e setter
.
Quando trabalhamos com métodos do tipo getter
e setter
devemos respeitar algumas regras, sendo:
O atributo privado deve ser declarado na classe, não sendo necessário realizar sua atribuição. Exemplo:
class ContaCorrente{
#saldo;
// Métodos da classe
}
O uso dos métodos do tipo getter
e setter
estão disponíveis apenas em classes que possuem o método constructor
Método getter
- Será usada a palavra-chave
get
antes do nome do método - O nome do método deve ser o nome do atributo privado sem a tralha (
#
) - Não deve receber parâmetro
- Deve retornar o atributo privado, exemplo:
return this.#saldo;
- A sintaxe de acesso ao método será:
nomeDoObjeto.nomeDoMetodoGetter
Método setter
- Será usada a palavra-chave
set
antes do nome do método - O nome do método deve ser o nome do atributo privado sem a tralha (
#
). - Deve receber um único parâmetro
- O parâmetro deve ser atribuído ao atributo privado.
- A sintaxe de acesso ao método será:
nomeDoObjeto.nomeDoMetodoSetter = valor
Sabendo das principais regras, iremos considerar a classe ContaCorrente
que possui o atributo privado #saldo
e os métodos getter
e setter
, assim teríamos os seguintes exemplos.
Exemplo método getter
get saldo(){
console.log('Acessando o método get');
return this.#saldo;
}
Exemplo de método setter
set saldo(valor){
console.log('Acessando o método set');
this.#saldo = valor;
}
Adicionaremos os métodos a classe ContaCorrente
, e realizamos a criação da contaDoDaniel
, onde primeiramente acessamos o saldo da conta, logo após atribuímos o valor 100
e por fim, realizamos novo acesso ao saldo. Obtendo o seguinte resultado.
class ContaCorrente{
#saldo;
constructor(numero){
this.numero = numero;
this.#saldo = 0;
}
get saldo(){
console.log('Acessando o método get');
return this.#saldo;
}
set saldo(valor){
console.log('Acessando o método set');
this.#saldo = valor;
}
}
const contaDoDaniel = new ContaCorrente(10);
console.log(contaDoDaniel.saldo);
contaDoDaniel.saldo = 100;
console.log(contaDoDaniel.saldo);
Resultado
Acessando o método get
0
Acessando o método set
Acessando o método get
100
Note que as mensagens presentes nos métodos getter
e setter
também foram impressas reforçando que os métodos foram realmente utilizados.
A título de curiosidade, caso queira se aprofundar ainda mais neste assunto, recomendo a leitura do artigo da Alura This, Getters e Setters nas classes Javascript
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Espero ter ajudado, em caso de dúvidas fico à disposição.
Grande abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!