Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico sobre encapsulamento
  2. Entender o operador #
  3. Uso do this

De forma simples, encapsulamento diz respeito ao acesso ao recursos de uma classe que podem ser usados internamente e externamente. Nesta parte do tutorial vamos ver como aplicar encapsulamento na linguagem JS.

Os de conceitos de P.O.O podem ser vistos em Conceitos O.O.

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.

  1. 18/08/2025 - revisão 4 - Ajustes: pontuais e sintaxes 'atributo' e 'método'
  2. 26/09/2024 - revisão 3 - Correção em ex. 2, introdução; ajustes pontuais
  3. 02/09/2024 - revisão 2 - Correção em links de objetivos
  4. 05/10/2023 - revisão 1 - Correção em layout, navegação, erros gramaticais
  5. 31/05/2023 - versão inicial