Por padrão, os recursos de uma classe são públicos, como pode ser visto
no exemplo abaixo:
Exemplo 1
class meuErro
{
codigo; //atributo público
constructor(cod){
this.codigo = cod;
}
}
let x = new meuErro(999);
console.log(x.codigo);
Saída
999
Porém, existem momentos em que não desejamos que um recurso seja acessado de fora
de sua classe. Para isso, utilizamos o operador (#) que torna um método, atributo
ou outro recurso, como privado.
Sintaxe: atributo
class nome_classe
{
#nome_atributo1 [= valor_padrao1];
#nome_atributo2 [= valor_padrao2];
#nome_atributoN [= valor_padraoN];
}
Sintaxe: método
class nome_classe
{
#nome_metodo( <lista_parametros> )
{
//corpo
}
}
Exemplo 2
class meuErro{
#codigo = -1;
constructor(cod){
this.#codigo = cod;
}
#metodo(){
console.log("metodo");
}
get Codigo(){
this.#metodo();
return this.#codigo;
}
}
let x = new meuErro(999);
console.log(x.Codigo)
Saída
metodo
999
Como visto no exemplo acima, todas as declarações que utilizam os recursos privados
devem ser prefixados com o operador(#). Tudo que foi discutido em
atributos e
métodos também são válidos.
JS não fornece o modificador de acesso protected. Esse, deve ser simulado
utilizando outros recursos da linguagem. Em
JS POO: Herança essa simulação será
vista.