Esta seção funciona como uma referência prática sobre objetos no JavaScript. O foco agora deixa de ser apenas listas de valores e passa a ser a representação de entidades com propriedades bem definidas.
Ao final deste guia, você deve conseguir:
Um objeto é uma estrutura que agrupa informações relacionadas usando pares de chave e valor.
Exemplo:
const aluno = {
nome: 'Ana',
nota: 8.5,
turma: '2AT'
};
Nesse caso:
nome é uma propriedade;'Ana' é o valor dessa propriedade;nota e turma.Objetos são úteis quando um único valor já não basta.
Use array quando a ideia principal for uma lista de itens.
const nomes = ['Ana', 'Bruno', 'Carla'];
Use objeto quando a ideia principal for descrever uma entidade com várias características.
const aluno = {
nome: 'Ana',
nota: 8.5,
cidade: 'Charqueadas'
};
Regra prática:
const produto = {
nome: 'Caderno',
preco: 18.9,
estoque: 12
};
const usuario = {};
Depois, as propriedades podem ser adicionadas.
usuario.nome = 'Marina';
usuario.idade = 17;
É a forma mais comum.
const filme = {
titulo: 'Wall-E',
ano: 2008
};
console.log(filme.titulo);
Útil quando o nome da propriedade vem de uma variável.
const filme = {
titulo: 'Wall-E',
ano: 2008
};
console.log(filme['ano']);
const aluno = {
nome: 'Ana',
nota: 8
};
aluno.nota = 9;
aluno.cidade = 'São Jerônimo';
Depois disso, o objeto passa a ter a nova nota e também a nova propriedade cidade.
Para remover uma propriedade, use delete.
const aluno = {
nome: 'Ana',
nota: 8,
cidade: 'São Jerônimo'
};
delete aluno.cidade;
Quando você precisa inspecionar um objeto, três métodos aparecem bastante:
Object.keys(objeto): devolve um array com as chaves;Object.values(objeto): devolve um array com os valores;Object.entries(objeto): devolve um array de pares [chave, valor].Exemplo:
const aluno = {
nome: 'Ana',
nota: 8.5,
turma: '2AT'
};
console.log(Object.keys(aluno));
console.log(Object.values(aluno));
console.log(Object.entries(aluno));
Saída esperada:
['nome', 'nota', 'turma']
['Ana', 8.5, '2AT']
[
['nome', 'Ana'],
['nota', 8.5],
['turma', '2AT']
]
Esses métodos são úteis para:
Exemplo com entries:
Object.entries(aluno).forEach(function([chave, valor]) {
console.log(chave, valor);
});
Muitas estruturas reais usam os dois juntos.
Exemplo:
const turma = {
nome: '2AT',
alunos: ['Ana', 'Bruno', 'Carla']
};
Aqui:
turma é um objeto;alunos é uma propriedade desse objeto;alunos é um array.Este é um dos formatos mais importantes em aplicações web.
const alunos = [
{ nome: 'Ana', nota: 8 },
{ nome: 'Bruno', nota: 6 },
{ nome: 'Carla', nota: 9 }
];
Agora temos uma lista de entidades completas.
Isso permite:
const alunos = [
{ nome: 'Ana', nota: 8 },
{ nome: 'Bruno', nota: 6 },
{ nome: 'Carla', nota: 9 }
];
alunos.forEach(function(aluno) {
console.log(aluno.nome, aluno.nota);
});
Esse padrão é muito comum porque combina a ideia de lista com a ideia de entidade.
const aprovados = alunos.filter(function(aluno) {
return aluno.nota >= 7;
});
const nomes = alunos.map(function(aluno) {
return aluno.nome;
});
const somaNotas = alunos.reduce(function(acumulador, aluno) {
return acumulador + aluno.nota;
}, 0);
Em interfaces web, objetos aparecem o tempo todo para representar dados da tela.
Exemplo:
const aluno = {
nome: 'Ana',
nota: 8.5
};
const saida = document.querySelector('#saida');
saida.textContent = `${aluno.nome} tirou ${aluno.nota}`;
Quando existe uma lista de objetos, o JavaScript costuma percorrer essa lista e montar a interface dinamicamente.
const aluno = { nome: 'Ana' };
console.log(aluno[0]);
Isso não faz sentido porque o objeto não está organizado por índice.
console.log(aluno.idade);
O retorno será undefined.
Exemplo ruim:
const aluno = {
nome: 'Ana',
NotaFinal: 8,
cidade_aluno: 'Pelotas'
};
Prefira padrões consistentes.
keys, values e entries quando precisar inspecionar ou percorrer um objeto;As práticas desta seção mostram objetos em uso real:
perfil-aluno/: criação e atualização de um objeto único com dados de formulário;vitrine-produtos/: renderização de um array de objetos em cards e resumo de preços;agenda-contatos/: cadastro e busca de contatos representados por objetos;boletim/: cadastro de alunos, cálculo de média, aprovados e maior nota usando array de objetos.Essa seção serve como ponte entre fundamentos de JavaScript e interfaces mais completas com DOM, formulários e persistência.
Os pontos centrais sobre objetos são estes:
Object.keys(), Object.values() e Object.entries() ajudam a inspecionar objetos;Quando você domina objetos e arrays de objetos, fica muito mais fácil construir aplicações web mais próximas de sistemas reais.