JavaScript: Objetos em JavaScript
Última atualização: 2026-10-13
Objetos são a estrutura de dados mais essencial em JavaScript. Pense neles como cartões de informações — a frente diz "Nome: Alice" e o verso diz "Idade: 20". Cada informação tem uma chave e um valor, formando um par chave-valor.
1. Criando e Trabalhando com Objetos
Use chaves {} para escrever um objeto diretamente — esta é a abordagem mais comum:
<script>
const student = {
name: "Alice",
age: 20,
major: "Ciência da Computação"
};
console.log(student);
</script>
Pares chave-valor são separados por dois-pontos, e os pares são separados por vírgulas. Uma vírgula trailing após o último par é permitida (e conveniente para adições futuras).
(2) Acessando Propriedades
Duas maneiras de acessar propriedades de objetos:
| Método | Sintaxe | Quando Usar |
|---|---|---|
| Notação de ponto | obj.nome |
Quando o nome da propriedade é um identificador válido |
| Notação de colchetes | obj["nome"] |
Quando o nome contém caracteres especiais ou está armazenado em uma variável |
A maior vantagem da notação de colchetes: você pode usar uma variável como chave.
<script>
const key = "name";
console.log(student[key]); // Mesmo que student["name"]
</script>
(3) Modificando e Adicionando Propriedades
Após criar um objeto, você pode modificar propriedades existentes ou adicionar novas a qualquer momento — mesmo que o objeto tenha sido declarado com const (const bloqueia a referência, não o conteúdo).
<script>
student.age = 21; // Modificar
student.grade = "Júnior"; // Adicionar nova propriedade
console.log(student);
</script>
(4) Deletando Propriedades
Use o operador delete para remover uma propriedade completamente:
<script>
delete student.grade;
console.log(student);
</script>
Após a deleção, acessar aquela propriedade retorna undefined.
(5) Métodos
Uma função dentro de um objeto é chamada de método. Quando uma função se torna o valor de uma propriedade, o objeto pode "fazer coisas":
<script>
const dog = {
name: "Rex",
bark() {
return "Au! Eu sou " + this.name;
}
};
console.log(dog.bark());
</script>
(6) A Palavra-chave this
this se refere ao "objeto atual" — quem chama o método, this é aquele objeto. Este é um dos conceitos mais complicados do JavaScript: se um método for extraído e chamado separadamente, this não apontará mais para o objeto original.
<script>
const bark = dog.bark;
console.log(bark()); // this não aponta mais para dog — pode ser window ou undefined
</script>
(7) Construtores
Quando você precisa criar múltiplos objetos com a mesma estrutura, use uma função construtora:
<script>
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHi = function() {
return "Olá, eu sou " + this.name;
};
}
const p1 = new Person("Bob", 25);
const p2 = new Person("Charlie", 30);
console.log(p1.sayHi());
console.log(p2.sayHi());
</script>
new faz três coisas: cria um objeto vazio → define this para apontar para ele → retorna o objeto.
(8) Object.keys / values / entries
Esses três métodos estáticos retornam arrays das chaves, valores e pares chave-valor de um objeto:
| Método | Retorna |
|---|---|
Object.keys(obj) |
["name", "age"] |
Object.values(obj) |
["Alice", 20] |
Object.entries(obj) |
[["name","Alice"], ["age",20]] |
Muito útil para iterar sobre objetos: Object.keys(obj).forEach(key => ...).
▶ Exemplo: Criando um Objeto de Aluno e Exibindo Informações
▶ Experimente▶ Exemplo: Notação de Ponto vs Notação de Colchetes
▶ Experimente▶ Exemplo: Adicionando, Modificando e Deletando Propriedades Dinamicamente
▶ Experimente▶ Exemplo: Construtores e Object.keys/values/entries
▶ Experimente❓ Perguntas Frequentes
const?const bloqueia a referência da variável (significando que ela sempre aponta para o mesmo objeto), não o conteúdo do objeto. Você pode adicionar, modificar e deletar propriedades livremente — mas não pode reatribuir com obj = {}."home-city"), ou quando o nome está armazenado em uma variável para acesso dinâmico, você deve usar colchetes. Para tudo mais, a notação de ponto é mais limpa e preferida.new com um construtor?this apontará para o objeto global (ou undefined no modo estrito), fazendo com que as propriedades vão para o lugar errado ou lancem um erro. Esta é uma armadilha clássica — a sintaxe class do ES6 lida com isso automaticamente.📖 Resumo
- Objetos são criados com
{}, armazenam dados em pares chave-valor, acessados por notação de ponto ou colchetes - Colchetes são para chaves dinâmicas e caracteres especiais; notação de ponto é preferida por simplicidade
- Métodos acessam propriedades via
this, cujo valor depende do contexto de chamada - Construtores com
newcriam múltiplos objetos com a mesma estrutura Object.keys/values/entriesiteram sobre chaves, valores e pares chave-valor
📝 Exercícios
- Crie um objeto
livrocom propriedadestitulo,autoreano, além de um métodogetSummary()que retorna uma string como"titulo por autor, publicado em ano". - Escreva um construtor
Carro(marca, modelo, ano), use-o para criar 3 carros, depois useObject.keyspara listar todos os nomes de propriedades de um carro. - Adicione dinamicamente um método
dirigir()a qualquer um dos carros acima (retorna"marca modelo está dirigindo"), depois chame-o. Observe comothisse refere ao objeto atual dentro do método.