Pular para o conteúdo

Documentação

Manipulação de objetos

Um objeto em JavaScript organiza dados em pares de chave e valor entre chaves { }. É a estrutura principal para representar entidades como usuários, produtos, configurações e registros.

JavaScript traz métodos prontos na classe Object para inspecionar, copiar e proteger objetos, além de operadores modernos como o encadeamento opcional ?., o spread ... e a desestruturação.

Chaves, valores e entradas

Descubra quais propriedades existem e transforme objetos em listas para percorrer facilmente.

Object.keys()

Devolve um array contendo os nomes de todas as propriedades (as chaves) do objeto.

Sintaxe
Object.keys(objeto)
Devolve
Um array de strings com os nomes das chaves.
const livro = { titulo: 'O Hobbit', autor: 'Tolkien', ano: 1937 };
console.log(Object.keys(livro));
Mostra
[ 'titulo', 'autor', 'ano' ]

Object.values()

Devolve um array com todos os valores das propriedades do objeto.

Sintaxe
Object.values(objeto)
Devolve
Um array com os valores.
const precos = { maca: 5, banana: 3, uva: 8 };
console.log(Object.values(precos));
Mostra
[ 5, 3, 8 ]

Object.entries()

Devolve uma lista de pares [chave, valor]. Muito útil para percorrer com for...of ou filtrar propriedades com métodos de array.

Sintaxe
Object.entries(objeto)
Devolve
Um array de pares [chave, valor].
const dados = { brasilia: 'DF', salvador: 'BA' };
console.log(Object.entries(dados));
Mostra
[ [ 'brasilia', 'DF' ], [ 'salvador', 'BA' ] ]

Object.fromEntries()

Faz o inverso de Object.entries(): recebe uma lista de pares [chave, valor] e reconstrói um objeto.

Sintaxe
Object.fromEntries(listaDePares)
Devolve
Um novo objeto.
const pares = [['nome', 'Ana'], ['idade', 25]];
const pessoa = Object.fromEntries(pares);
console.log(pessoa);
Mostra
{ nome: 'Ana', idade: 25 }

Verificar existência

Confirme com segurança se um campo existe no objeto.

Object.hasOwn()

A forma moderna e recomendada de conferir se uma propriedade pertence diretamente ao objeto, sem pegar herança de protótipo.

Sintaxe
Object.hasOwn(objeto, 'propriedade')
Devolve
true se a propriedade direta existir, senão false.
const user = { nome: 'Carlos' };
console.log(Object.hasOwn(user, 'nome'));
console.log(Object.hasOwn(user, 'idade'));
Mostra
true
false

Operador in

Verifica se a propriedade existe no objeto ou na cadeia de protótipos herdada dele (como toString).

Sintaxe
'propriedade' in objeto
Devolve
true ou false.
const animal = { tipo: 'Gato' };
console.log('tipo' in animal);
console.log('toString' in animal);
console.log('idade' in animal);
Mostra
true
true
false

Copiar, mesclar e clonar

Combine múltiplos objetos ou crie cópias independentes.

Spread de objeto ({ ...obj })

Cria um novo objeto copiando as propriedades de um ou mais objetos existentes. Permite sobrescrever valores facilmente de forma imutável.

Sintaxe
const novo = { ...origem, chaveNova: valor }
Devolve
Um novo objeto.
const base = { tema: 'claro', fonte: 14 };
const atual = { ...base, fonte: 18, som: true };
console.log(atual);
console.log(base);
Mostra
{ tema: 'claro', fonte: 18, som: true }
{ tema: 'claro', fonte: 14 }

Object.assign()

Copia todas as propriedades de um ou mais objetos de origem para um objeto de destino. Modifica o objeto de destino.

Sintaxe
Object.assign(destino, ...origens)
Devolve
O objeto de destino atualizado.
const alvo = { a: 1 };
Object.assign(alvo, { b: 2 }, { c: 3 });
console.log(alvo);
Mostra
{ a: 1, b: 2, c: 3 }

structuredClone()

Cria uma cópia profunda (deep clone) do objeto. Objetos e listas internas ganham referências totalmente independentes.

Sintaxe
structuredClone(objeto)
Devolve
Uma cópia profunda e isolada do objeto.
const original = { nome: 'Ana', notas: [10, 9] };
const clone = structuredClone(original);
clone.notas.push(8);
console.log(original.notas);
console.log(clone.notas);
Mostra
[ 10, 9 ]
[ 10, 9, 8 ]

Imutabilidade e proteção

Previna alterações indesejadas em objetos compartilhados ou sensíveis.

Object.freeze() e Object.isFrozen()

Congela o objeto: impede adicionar novas propriedades, alterar valores existentes ou deletar propriedades. Object.isFrozen() confirma o estado.

Sintaxe
Object.freeze(objeto)
Object.isFrozen(objeto)
Devolve
O próprio objeto congelado.
const status = Object.freeze({ ativo: true, versao: 1 });
console.log(Object.isFrozen(status));
console.log(status);
Mostra
true
{ ativo: true, versao: 1 }

Object.seal() e Object.isSealed()

Sela o objeto: permite alterar valores das propriedades existentes, mas impede adicionar novas ou deletar as existentes.

Sintaxe
Object.seal(objeto)
Object.isSealed(objeto)
Devolve
O próprio objeto selado.
const item = { preco: 50 };
Object.seal(item);
item.preco = 60;
console.log(item.preco);
console.log(Object.isSealed(item));
Mostra
60
true

Acesso seguro e exclusão

Técnicas essenciais para ler propriedades aninhadas, remover campos e extrair variáveis.

Encadeamento opcional (?.)

Lê propriedades aninhadas sem dar erro TypeError quando um nível intermediário for null ou undefined. Devolve undefined com segurança.

Sintaxe
objeto?.propriedade?.subPropriedade
Devolve
O valor da propriedade, ou undefined.
const cliente = { nome: 'Paula' };
console.log(cliente?.endereco?.rua);
console.log(cliente?.nome);
Mostra
undefined
Paula

Operador delete

Remove uma propriedade de um objeto.

Sintaxe
delete objeto.propriedade
Devolve
true se a propriedade foi removida com sucesso.
const usuario = { id: 1, senhaProvisoria: '123456', ativo: true };
delete usuario.senhaProvisoria;
console.log(usuario);
Mostra
{ id: 1, ativo: true }

Desestruturação de objeto ({ })

Extrai propriedades de um objeto diretamente para variáveis individuais, com suporte a renomeação e valores padrão.

Sintaxe
const { nome, idade, cargo = 'Junior' } = usuario
Devolve
Cria as variáveis locais correspondentes.
const filme = { titulo: 'Matrix', lancamento: 1999 };
const { titulo, lancamento, genero = 'Ficção' } = filme;
console.log(titulo);
console.log(lancamento);
console.log(genero);
Mostra
Matrix
1999
Ficção

Quer testar? Copie um exemplo e rode no Rascunho.