Guia Completo Sobre Objetos em JavaScript
Guia Completo Sobre Objetos em JavaScript
Introdução
Objetos são um dos conceitos centrais e mais poderosos de JavaScript. Eles permitem
armazenar coleções de dados e mais complexamente representar entidades do mundo real
em seu código. Neste guia, vamos explorar a fundo como criar, manipular e usar objetos em
JavaScript, abordando desde a declaração básica até funcionalidades mais avançadas. Se
você está começando com JavaScript ou quer aprimorar seu entendimento sobre objetos,
esta documentação servirá como um recurso completo.
Objetos em JavaScript são coleções de pares chave-valor. Eles são usados para armazenar
múltiplos valores e para estruturar dados de forma organizada. Enquanto arrays são ótimos
para listas ordenadas de dados, objetos são ideais para representar coisas com
características e propriedades.
const pessoa = {
nome: 'João',
idade: 30,
profissao: 'Desenvolvedor'
};
Neste exemplo, pessoa é um objeto com três propriedades: nome , idade , e profissao .
As chaves ( nome , idade , profissao ) são as propriedades do objeto, e os valores
( 'João' , 30 , 'Desenvolvedor' ) são os dados associados.
Existem diversas maneiras de criar objetos em JavaScript, mas as duas formas mais
comuns são usando a notação literal e o construtor new Object() .
Notação Literal
A forma mais direta e comum de criar um objeto é usando a notação literal, onde se define o
objeto diretamente.
const carro = {
marca: 'Toyota',
modelo: 'Corolla',
ano: 2020
};
Outra forma de criar objetos é usando o construtor Object() , que é menos comum, mas
ainda útil em certos contextos.
Propriedades de objetos podem ser acessadas de duas formas: usando a notação de ponto
( . ) ou a notação de colchetes ( [] ).
Notação de Ponto
console.log(pessoa.nome); // 'João'
Notação de Colchetes
console.log(pessoa['idade']); // 30
Propriedades podem ser adicionadas a qualquer momento, mesmo depois que o objeto foi
criado.
pessoa.altura = 1.75;
console.log(pessoa); // { nome: 'João', idade: 30, profissao: 'Desenvolved
pessoa.idade = 31;
console.log(pessoa.idade); // 31
delete pessoa.profissao;
console.log(pessoa); // { nome: 'João', idade: 31, altura: 1.75 }
Objetos são comparados por referência, não por valor. Isso significa que mesmo que dois
objetos tenham as mesmas propriedades e valores, eles não serão considerados iguais.
const obj1 = { a: 1 };
const obj2 = { a: 1 };
Métodos são funções associadas a um objeto. Eles permitem que objetos realizem ações
com seus próprios dados.
3.1 Criando Métodos
const calculadora = {
somar: function (a, b) {
return a + b;
},
subtrair(a, b) {
return a - b;
}
};
console.log(calculadora.somar(2, 3)); // 5
console.log(calculadora.subtrair(5, 2)); // 3
const cachorro = {
nome: 'Rex',
latir() {
console.log(`${this.nome} está latindo!`);
}
};
Objetos podem ser clonados e mesclados usando várias técnicas, como Object.assign() ,
o spread operator ( ... ), e outras.
Usando Object.assign()
const original = { a: 1, b: 2 };
const copia = Object.assign({}, original);
console.log(copia); // { a: 1, b: 2 }
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const mesclado = { ...obj1, ...obj2 };
console.log(mesclado); // { a: 1, b: 2 }
Clonagem rasa ( shallow copy ) só copia o primeiro nível do objeto. Se o objeto contém
outros objetos, eles ainda referenciam o mesmo endereço na memória.
const objA = { x: { y: 1 } };
const objB = { ...objA };
objB.x.y = 2;
console.log(objA.x.y); // 2 - Ambos referem ao mesmo objeto interno
Esses métodos permitem iterar sobre as chaves, valores e entradas (pares chave-valor) de
um objeto.
const carro = { marca: 'Ford', modelo: 'Fiesta', ano: 2018 };
Object.freeze()
Object.seal()
console.log(usuario.idade); // 25
usuario.idade = 30; // Ignorado por ser não writable
console.log(usuario.idade); //
25
Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global.
const Configuracao = (function () {
let instancia;
function criarInstancia() {
return { modo: 'escuro', volume: 50 };
}
return {
getInstancia() {
if (!instancia) {
instancia = criarInstancia();
}
return instancia;
}
};
})();
function Animal(nome) {
this.nome = nome;
}
Animal.prototype.falar = function () {
console.log(`${this.nome} faz barulho.`);
};
Conclusão