Objetos: introdução
Esta aula introduz o conceito de objetos em JavaScript, abordando pares chave-valor, acesso por ponto e colchete, e métodos. O aluno aprenderá a criar e manipular objetos, entendendo sua importância para organizar dados e funcionalidades.
Objetos são uma das estruturas de dados fundamentais em JavaScript. Eles permitem agrupar valores relacionados (propriedades) e funções (métodos) em uma única entidade, facilitando a organização e manipulação de dados complexos. Diferente de arrays, que usam índices numéricos, objetos usam chaves nomeadas (strings ou símbolos) para identificar cada valor.
Nesta aula, vamos explorar os conceitos básicos de objetos: como criar pares chave-valor, acessar propriedades com notação de ponto e colchete, e adicionar métodos que encapsulam comportamentos. Ao final, você terá uma base sólida para trabalhar com objetos em JavaScript.
Pares chave-valor
Um objeto é uma coleção de pares chave-valor (também chamados de propriedades). A chave é uma string (ou símbolo) que identifica o valor associado. O valor pode ser qualquer tipo de dado JavaScript: números, strings, booleanos, arrays, funções ou até outros objetos.
Para criar um objeto, usamos chaves {} e definimos as propriedades separadas por vírgulas. Cada par é escrito como chave: valor. Exemplo:
const pessoa = {
nome: "Maria",
idade: 30,
cidade: "São Paulo"
};As chaves podem ser strings com espaços ou caracteres especiais, mas nesse caso devem ser escritas entre aspas. Por convenção, usamos nomes sem espaços e em camelCase para chaves simples.
Propriedades podem ser adicionadas ou modificadas dinamicamente após a criação do objeto:
pessoa.profissao = "Engenheira"; // adiciona nova propriedade
pessoa.idade = 31; // modifica valor existenteAcesso por ponto e colchete
Para acessar o valor de uma propriedade, temos duas sintaxes: notação de ponto (objeto.chave) e notação de colchetes (objeto["chave"]).
A notação de ponto é mais comum e legível, mas só funciona se a chave for um identificador válido (sem espaços, hífens, ou começando com número).
console.log(pessoa.nome); // "Maria"
console.log(pessoa.idade); // 30A notação de colchetes é mais flexível: permite usar strings arbitrárias (incluindo com espaços) e expressões que resultam em uma string.
console.log(pessoa["cidade"]); // "São Paulo"
const chave = "idade";
console.log(pessoa[chave]); // 30Notação de colchetes é útil quando a chave é dinâmica ou contém caracteres especiais. Por exemplo:
const obj = { "nome completo": "João Silva" };
console.log(obj["nome completo"]); // funciona
// console.log(obj.nome completo); // erro de sintaxeMétodos
Métodos são funções que são propriedades de um objeto. Eles permitem que o objeto execute ações ou calcule valores baseados em suas propriedades.
Para definir um método, atribuímos uma função a uma chave. Existem várias formas:
const carro = {
marca: "Toyota",
modelo: "Corolla",
ano: 2020,
// método com function expression
ligar: function() {
console.log("Vruum!");
},
// método com shorthand (ES6+)
buzinar() {
console.log("Bip bip!");
}
};
carro.ligar(); // "Vruum!"
carro.buzinar(); // "Bip bip!"Dentro de um método, podemos acessar outras propriedades do objeto usando a palavra-chave this. this se refere ao objeto que chamou o método.
const pessoa = {
nome: "Ana",
saudacao() {
console.log(`Olá, meu nome é ${this.nome}`);
}
};
pessoa.saudacao(); // "Olá, meu nome é Ana"Métodos também podem receber parâmetros e retornar valores:
const calculadora = {
somar(a, b) {
return a + b;
}
};
console.log(calculadora.somar(5, 7)); // 12Boas práticas
- Use nomes de chaves descritivos e em camelCase para propriedades.
- Prefira a notação de ponto sempre que possível, por ser mais limpa.
- Evite modificar objetos de forma desorganizada; se precisar de muitas alterações, considere criar um novo objeto.
- Mantenha os métodos focados em operações relacionadas ao objeto.
Referências
- MDN: Trabalhando com objetos
- MDN: Object - Referência
- JavaScript.info: Objects
- W3Schools: JavaScript Objects
- freeCodeCamp: JavaScript Objects Explained
Exercícios
Crie um objeto chamado
livrocom as propriedades:titulo(string),autor(string) eano(number). Em seguida, exiba o título no console usando notação de ponto.✓ Resposta:const livro = { titulo: "O Senhor dos Anéis", autor: "J.R.R. Tolkien", ano: 1954 }; console.log(livro.titulo); // "O Senhor dos Anéis"Adicione uma propriedade
editoraao objetolivrousando notação de colchetes. Depois, exiba o valor no console.✓ Resposta:livro["editora"] = "Allen & Unwin"; console.log(livro["editora"]); // "Allen & Unwin"Crie um objeto
alunocom propriedadesnomeenotas(array de números). Adicione um métodomediaque retorna a média das notas.✓ Resposta:const aluno = { nome: "Carlos", notas: [8, 9, 7], media() { const soma = this.notas.reduce((acc, nota) => acc + nota, 0); return soma / this.notas.length; } }; console.log(aluno.media()); // 8Dado o objeto
produto = { nome: "Camiseta", preco: 50, qtd: 3 }, crie um métodototalque retorna o valor total (preço * quantidade).✓ Resposta:const produto = { nome: "Camiseta", preco: 50, qtd: 3, total() { return this.preco * this.qtd; } }; console.log(produto.total()); // 150Crie um objeto
pessoacom propriedadesnomeeidade. Adicione um métodoaniversarioque incrementa a idade em 1 e exibe uma mensagem. Teste o método.✓ Resposta:const pessoa = { nome: "Lucas", idade: 25, aniversario() { this.idade++; console.log(`Feliz aniversário, ${this.nome}! Agora você tem ${this.idade} anos.`); } }; pessoa.aniversario(); // "Feliz aniversário, Lucas! Agora você tem 26 anos."