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.