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!