Descubra como Verificar Propriedades de Objetos
Se você programa em JavaScript, já deve ter se deparado com situações onde precisava saber se uma determinada propriedade existe em um objeto, e é aí que entra o operador in. Vou te mostrar como ele funciona, como utilizá-lo e por que ele pode ser mais eficiente do que outras formas de verificar propriedades em um objeto.
O que é o operador in?
O operador in é utilizado no JavaScript para verificar se uma propriedade existe em um objeto. O legal é que ele não só verifica as propriedades diretamente definidas no objeto, mas também aquelas herdadas dos protótipos.
A sintaxe é bem simples:
'propriedade' in objeto;
Se a propriedade existir, ele retorna true e se não existir, false. Parece simples, né? Mas a utilidade dele vai além de uma simples checagem. Bora ver alguns exemplos?
Exemplo 1: Propriedade Direta no Objeto
Pra começar, vamos ver um exemplo básico de uso do operador in verificando uma propriedade direta.
const carro = {
marca: 'Toyota',
ano: 2020
};
console.log('marca' in carro); // true
console.log('modelo' in carro); // false
Aqui, temos um objeto carro com as propriedades marca e ano. Quando usamos 'marca' in carro, o resultado é true, pois a propriedade marca existe diretamente no objeto. Já 'modelo' in carro retorna false, já que essa propriedade não foi definida.
Esse tipo de verificação é ótimo para evitar erros ao tentar acessar propriedades que não existem. Já tentou acessar uma propriedade inexistente e quebrou o código? Eu já! 😅
Exemplo 2: Propriedades Herdadas do Protótipo
Agora, olha só como o operador in também detecta propriedades herdadas do protótipo
const pessoa = {
nome: 'Ana'
};
console.log('toString' in pessoa); // true
Nesse caso, o objeto pessoa não tem a propriedade toString diretamente, mas essa função é herdada de Object.prototype. O operador in consegue enxergar isso e retorna true.
Por que isso é útil?
As vezes você pode querer verificar se alguma funcionalidade herdada está disponível no objeto. Isso pode te salvar em algumas situações mais complexas.
Exemplo 3: Comparando com hasOwnProperty
Agora vamos fazer uma comparação com outra maneira de verificar propriedades, o método hasOwnProperty. Ele só verifica se a propriedade foi definida diretamente no objeto ignorando as herdadas.
const pessoa = {
nome: 'Ana'
};
console.log(pessoa.hasOwnProperty('toString')); // false
console.log('toString' in pessoa); // true
O método hasOwnProperty retorna false para toString, já que essa propriedade não está diretamente no objeto pessoa. Enquanto isso, o operador in retorna true, pois ele considera também as propriedades herdadas.
Quando usar ine quando usar hasOwnProperty?
A resposta é a mais falada quando se pergunta qualquer coisa para um desenvolvedor sênior, depende.
- Use
inse você quer verificar qualquer propriedade, seja ela direta ou herdada. - Use
hasOwnPropertyse você precisa garantir que a propriedade foi definida diretamente no objeto, ignorando as herdadas do protótipo. O operadoriné bem mais prático quando você não precisa se preocupar com a origem da propriedade, mas ambos tem seu lugar no parquinho então basta saber em qual lugar e qual a finalidade você precisa.
Top comments (0)