Objetos: introdução
Esta aula introduz objetos em JavaScript, abordando pares chave-valor, acesso por ponto e colchete, e métodos. O conteúdo inclui exemplos práticos e exercícios para fixação.
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 do código. Diferentemente de arrays, que usam índices numéricos, objetos utilizam chaves nomeadas (strings) para acessar seus valores.
Nesta aula, exploraremos como criar objetos, acessar e modificar suas propriedades usando notação de ponto e colchete, e como adicionar métodos que executam ações. Ao final, você será capaz de modelar dados do mundo real de forma eficiente.
Pares chave-valor
Um objeto é uma coleção de pares chave-valor, onde cada chave é uma string (ou símbolo) e o valor pode ser qualquer tipo de dado JavaScript (número, string, booleano, array, outro objeto, função, etc.). As chaves são únicas dentro do objeto e servem como identificadores para os valores correspondentes.
Para criar um objeto, usamos chaves {} e definimos os pares separados por vírgula. Cada par é escrito como chave: valor. As chaves podem ser escritas sem aspas se forem identificadores válidos (sem espaços, começando com letra, $ ou _), mas podem ser strings literais se necessário.
// Exemplo de objeto com várias propriedades
const pessoa = {
nome: 'Alice',
idade: 30,
'e-mail': 'alice@email.com', // chave com caractere especial
'data de nascimento': '1994-05-15' // chave com espaço
};
console.log(pessoa); // { nome: 'Alice', idade: 30, 'e-mail': 'alice@email.com', 'data de nascimento': '1994-05-15' }As chaves 'e-mail' e 'data de nascimento' exigem aspas porque contêm caracteres especiais. É uma boa prática usar nomes de chave sem aspas sempre que possível, seguindo as regras de identificadores JavaScript.
Acesso por ponto e colchete
Existem duas formas principais de acessar valores em um objeto: notação de ponto (.) e notação de colchetes ([]). A notação de ponto é mais concisa e legível, mas só funciona com chaves que são identificadores válidos. A notação de colchetes é mais flexível, permitindo chaves com espaços, caracteres especiais ou dinâmicas (usando variáveis).
const carro = {
marca: 'Toyota',
modelo: 'Corolla',
ano: 2022
};
// Acesso por ponto
console.log(carro.marca); // 'Toyota'
console.log(carro.modelo); // 'Corolla'
// Acesso por colchete
console.log(carro['ano']); // 2022
// Acesso com chave dinâmica
const chave = 'marca';
console.log(carro[chave]); // 'Toyota'
// Acesso a chave com espaço (precisa de colchete)
const obj = { 'nome completo': 'João Silva' };
console.log(obj['nome completo']); // 'João Silva'
// Atribuição de novas propriedades
carro.cor = 'preto'; // adiciona cor
carro['ano'] = 2023; // modifica ano
console.log(carro); // { marca: 'Toyota', modelo: 'Corolla', ano: 2023, cor: 'preto' }A notação de colchete é essencial quando o nome da chave é armazenado em uma variável, vem de uma entrada do usuário ou contém caracteres especiais. A notação de ponto é preferida por sua simplicidade, mas ambas são igualmente válidas.
Métodos
Métodos são funções que são propriedades de um objeto. Eles permitem que o objeto tenha comportamentos associados aos seus dados. Para definir um método, atribuímos uma função a uma chave do objeto. Dentro do método, podemos acessar outras propriedades do objeto usando a palavra-chave this, que se refere ao próprio objeto.
const calculadora = {
soma: function(a, b) {
return a + b;
},
subtracao: function(a, b) {
return a - b;
},
// Shorthand (ES6) - forma mais concisa
multiplicacao(a, b) {
return a * b;
}
};
console.log(calculadora.soma(5, 3)); // 8
console.log(calculadora.subtracao(10, 4)); // 6
console.log(calculadora.multiplicacao(6, 7)); // 42O uso de this é comum em métodos para referenciar outras propriedades do objeto. Por exemplo:
const pessoa = {
nome: 'Carlos',
idade: 25,
apresentar() {
console.log(`Olá, meu nome é ${this.nome} e tenho ${this.idade} anos.`);
}
};
pessoa.apresentar(); // 'Olá, meu nome é Carlos e tenho 25 anos.'Métodos podem receber parâmetros, retornar valores e interagir com outras partes do código. Eles são fundamentais para a programação orientada a objetos em JavaScript.
Boas práticas
- Use nomes de chave descritivos e consistentes (camelCase é comum).
- Prefira notação de ponto para legibilidade, a menos que precise de flexibilidade.
- Evite modificar objetos de forma inesperada; considere usar
Object.freeze()ou imutabilidade. - Métodos devem ser coerentes com o objeto; evite funções que não se relacionam com os dados.
Referências
- Trabalhando com objetos - MDN
- Acessores de propriedade - MDN
- this - MDN
- Object - MDN
- JavaScript Objects - W3Schools
Exercícios
- Crie um objeto chamado
livrocom as propriedades: titulo, autor, anoPublicacao e genero. Atribua valores de sua escolha e exiba o objeto no console. - Acesse a propriedade
autordo objetolivrousando notação de ponto e notação de colchete. Exiba ambos os resultados. - Adicione um método chamado
descricaoao objetolivroque retorne uma string no formato: "O livro [titulo] foi escrito por [autor] em [anoPublicacao]." Teste o método. - Crie um objeto
alunocom propriedades: nome, idade, curso e um métodoexibirDadosque exiba todas as propriedades no console. - Utilizando notação de colchete, adicione uma nova propriedade
matriculaao objetoalunocom valor '2024001'. Em seguida, exiba o objeto.
const livro = {
titulo: 'O Senhor dos Anéis',
autor: 'J.R.R. Tolkien',
anoPublicacao: 1954,
genero: 'Fantasia'
};
console.log(livro);console.log(livro.autor); // notação de ponto
console.log(livro['autor']); // notação de colchetelivro.descricao = function() {
return `O livro ${this.titulo} foi escrito por ${this.autor} em ${this.anoPublicacao}.`;
};
console.log(livro.descricao());const aluno = {
nome: 'Maria',
idade: 22,
curso: 'Engenharia',
exibirDados() {
console.log(`Nome: ${this.nome}, Idade: ${this.idade}, Curso: ${this.curso}`);
}
};
aluno.exibirDados();aluno['matricula'] = '2024001';
console.log(aluno);