Objetos

Digamos que você está descrevendo um único usuário: um nome, um email, uma idade, se está conectado. Você poderia espalhá-los em quatro variáveis separadas, mas eles pertencem juntos, e mantê-los separados significa passar quatro coisas toda vez que você quer dizer "o usuário". Um objeto deixa você reunir tudo isso em um único valor, onde cada parte tem um nome que você pode procurar. A maioria dos dados que você vai lidar, um usuário, um produto, um carrinho, chega exatamente assim.
Criando um objeto
Um objeto é uma coleção de valores nomeados, escrita com chaves. Dentro, você lista pares chave: valor, separados por vírgulas. A chave é o nome; o valor é o que ela mantém:
const user = {
name: "Marina",
age: 27,
};
console.log(user.name); // MarinaVocê lê um valor de volta com um ponto e a chave: user.name. Isso é chamado notação de ponto, e é o que você vai usar na maioria das vezes. A chave à esquerda, o valor armazenado à direita.
Há uma segunda forma de ler um valor, usando colchetes com a chave como uma string:
console.log(user["name"]); // MarinaNa maioria das vezes a notação de ponto fica mais limpa, então use-a. Os colchetes ganham seu espaço quando a chave não é uma palavra simples (digamos que tem um espaço) ou quando você não sabe a chave antecipadamente e ela está em outra variável.
const product = {
title: "Luminária de mesa",
price: 40,
inStock: true,
};
console.log(`${product.title} costs ${product.price}`); // Luminária de mesa costs 40Um objeto é um valor como qualquer outro. Você pode armazená-lo em uma const, colocá-lo em um array, passá-lo para uma função e retorná-lo. As chaves dão nomes às suas partes, que é o ponto inteiro: product.price diz o que é, onde um 40 nu sentado em uma variável não.
chave: valor em chaves. Leia um valor com um ponto e a chave, como user.name. Use a forma de colchete quadrado apenas quando a chave tem um caractere estranho ou vive em uma variável. Alterando um objeto
Objetos não são fixados uma vez que você os faz. Você pode adicionar uma nova chave, alterar uma existente ou remover uma inteiramente. Para adicionar ou atualizar, atribua à chave:
const user = {
name: "Marina",
};
user.age = 30; // adiciona uma nova chave
user.name = "Marina Silva"; // atualiza a existente
console.log(user); // { name: "Marina Silva", age: 30 }Se a chave já existe, atribuir a ela substitui o valor. Se não, é criada. Para remover uma chave, use delete:
delete user.age;
console.log(user); // { name: "Marina Silva" }Aqui está a parte que surpreende as pessoas. Um objeto const ainda pode ter suas propriedades alteradas. const significa que o nome user não pode apontar para um objeto diferente, mas o objeto para o qual aponta é permitido:
const cart = { total: 0 };
cart.total = 25; // ok, alterando o que está dentro
// cart = { total: 25 }; // isso daria erro, reatribuindo o nomedelete para remover uma. A surpresa é const: impede você apontar user para um objeto diferente, mas você ainda pode alterar o que está dentro do que ele mantém. Demorou um tempo para eu parar de esperar que const bloqueasse tudo. Métodos e this
Um valor em um objeto pode ser uma função. Quando é, é chamado de método: algo que o objeto pode fazer, em vez de um fato que armazena. Você o chama com o mesmo ponto, mais parênteses:
const user = {
name: "Marina",
greet() {
return `Oi, sou ${this.name}`;
},
};
console.log(user.greet()); // Oi, sou MarinaA nova palavra dentro é this. Quando você chama user.greet(), this significa "o objeto no qual este método foi chamado", que aqui é user. Então this.name lê a chave name do mesmo objeto. É assim que um método acessa os valores do seu próprio objeto sem que você os passe.
user.greet(). Dentro dele, this significa o objeto no qual o método foi chamado, então this.name lê o próprio name daquele objeto. É assim que um método chega aos valores do seu próprio objeto. Objetos e arrays juntos
A maioria dos dados reais é uma lista de objetos: muitos usuários, muitos produtos, cada objeto um registro com as mesmas chaves. Você coloca objetos dentro de um array:
const products = [
{ title: "Luminária de mesa", price: 40 },
{ title: "Caderno", price: 6 },
{ title: "Caneta", price: 3 },
];
console.log(products[0].title); // Luminária de mesaVocê acessa um objeto por sua posição (products[0]), então um de seus campos com um ponto (.title). Encadeados juntos, products[0].title lê o título do primeiro produto.
Para ler um campo de cada objeto, faça um loop sobre o array:
for (const product of products) {
console.log(product.title);
}
// Luminária de mesa
// Caderno
// CanetaCada volta do loop, product é um objeto da lista, e product.title lê seu título. Essa forma, um array de objetos que você faz loop sobre, é a maioria do trabalho de dados que você fará.
products[0], então um campo com products[0].title. Faça um loop sobre o array para tocar cada registro, e você tem o padrão por trás da maioria do trabalho de dados que fará. Aonde objetos vão em seguida
Objetos e arrays são as duas estruturas que você vai usar constantemente, e a maioria dos dados que você lida é algum aninhamento dos dois: objetos com campos de array, arrays de objetos, e combinações de ambos. Combine-os com métodos de array e você pode moldar quase qualquer dado na forma que você precisa.
O próximo passo é colocar objetos para funcionar em uma página. Quando você chega ao DOM, os elementos que você lê e altera são objetos também, com chaves que você define e métodos que você chama, então tudo aqui continua direto.

