DEV Community

Diego Ramos
Diego Ramos

Posted on

Dominando o Operador in no JavaScript

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;
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 in se você quer verificar qualquer propriedade, seja ela direta ou herdada.
  • Use hasOwnProperty se você precisa garantir que a propriedade foi definida diretamente no objeto, ignorando as herdadas do protótipo. O operador in é 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)