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

  1. Prototype
  2. Adicionar/Alterar atributo
  3. Adicionar/Alterar método
  4. Entender o Descriptor

A linguagem JS permite que possamos adicionar novas atribuitos e métodos a objetos já existentes ou instanciados. Isso é feito utilizando a atributo estático prototype.

Nesta parte do tutorial vamos aprender sobre prototype, como adicionar atributos e métodos em objetos, e támbém sobre Descriptor.

Para adicionarmos ou alterarmos um atributo de um objeto, utilizamos a sintaxe do prototype abaixo:

Sintaxe
nome_classe.prototype.nome_atributo = valor;
Onde
valor: valor primitivo ou objeto para atribuição
novo_atributo: nome da atributo para adicionar ou existente
Exemplo 1
class MeuObjeto
{
  atributo1 = undefined;
  constructor(p)
  {
    this.atributo1 = p;
  }
}

MeuObjeto.prototype.atributo2 = -1; //nova propriedade
let obj = new MeuObjeto("string");

console.log(obj.atributo1);
console.log(obj.atributo2);
Saída
string
-1

Para adicionarmos ou alterarmos um método de um objeto, utilizamos a sintaxe prototype abaixo:

Sintaxe
nome_classe.prototype.nome_metodo = funcao;
Onde
funcao: função ou função anônima
nome_metodo: nome do método para adição ou alteração
Exemplo 2
class MeuObjeto
{
  atributo1 = undefined;
}

function metodo1()
{
  console.log("metodo1");
}

MeuObjeto.prototype.metodo1 = metodo1; //novo método
MeuObjeto.prototype.metodo2 = function() //novo método
{
  console.log("metodo2");
}

let obj = new MeuObjeto("string");

obj.metodo1();
obj.metodo2();
Saída
metodo1
metodo2

De forma simples, descriptor ou "descritor", é um tipo de dado que possui atributos que armazenam informações sobre um atributo. Abaixo, pode ser conferida uma tabela com os atributos de um descriptor:

Sintaxe
let objeto = { 
  value: valor , 
  writable: true | false, 
  enumerable: true | false,
  configurable: true | false
}

Abaixo, pode ser conferida uma tabela com os atributos de um descriptor bem como suas decrições sucintas:

Tab. 1: Atributos Descriptor
Atributo Descrição
value Armazena o valor do atributo/método.
writable Armazena um booleano que define se pode ser alterada ou não
enumerable Armazena um booleano que define se é enumerável ou não
configurable Armazena um booleano que define se é configurável ou não

Um exemplo de uso de descriptor bem como seus atributos pode ser visto abaixo. Nesse exemplo, o método defineProperty da classe Object será utilizado.

Sintaxe
Object.defineProperty( obj, "atrib1", descriptor );
Exemplo 4
//nosso objeto
let obj = {
}
//descritor
let descriptor = { 
  value: true, 
  writable:true, 
  enumerable:true,
  configurable:true
}
//novo atributo
Object.defineProperty(obj,"atrib1",descriptor);

console.log(obj.atrib1);

//com writable false, prop1 não pode ser alterada
Object.defineProperty(obj,"atrib1",{writable:false});

//forçando alteração de valor
obj.prop1 = false;

//mas continua true
console.log(obj.prop1); 
Saída
prop1 : true
true
true

A classe Object, bem como seus atributos e métodos, podem ser vistos em Classes Nativas: Object com mais detalhes.

  1. 18/08/2025 - revisão 3 - Ajustes: pontuais, sintaxes e objetivos; Adição: sintae 'defineProperty'
  2. 02/09/2024 - revisão 2 - Correção em links de objetivos
  3. 05/10/2023 - revisão 1 - Correção em layout, navegação e erros gramaticais
  4. 31/05/2023 - versão inicial