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 existente

Acesso 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);  // 30

A 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]);    // 30

Notaçã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 sintaxe

Mé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)); // 12

Boas 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

Exercícios

  1. Crie um objeto chamado livro com as propriedades: titulo (string), autor (string) e ano (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"
  2. Adicione uma propriedade editora ao objeto livro usando notação de colchetes. Depois, exiba o valor no console.

    ✓ Resposta:
    livro["editora"] = "Allen & Unwin";
    console.log(livro["editora"]); // "Allen & Unwin"
  3. Crie um objeto aluno com propriedades nome e notas (array de números). Adicione um método media que 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()); // 8
  4. Dado o objeto produto = { nome: "Camiseta", preco: 50, qtd: 3 }, crie um método total que 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()); // 150
  5. Crie um objeto pessoa com propriedades nome e idade. Adicione um método aniversario que 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."