JavaScriptPOObasico

instanceof e verificação de tipo

Em sistemas reais, você frequentemente precisa tratar objetos de diferentes classes de forma unificada, mas ainda saber exatamente qual tipo cada um é. Por exemplo, ao processar uma lista de veículos em um sistema de frota, você pode querer calcular o IPVA de carros de forma diferente de motos. O operador instanceof é a ferramenta padrão para isso, e dominá-lo permite escrever código que se adapta corretamente a cada tipo, sem depender de checagens frágeis como typeof.

O PROBLEMA

Crie hierarquia: Veiculo → Carro e Moto. Use instanceof para verificar tipos e função polimórfica.

EXEMPLO

const c = new Carro("Toyota");
c instanceof Carro → true
c instanceof Veiculo → true
c instanceof Moto → false

SOBRE O CONCEITO

instanceof verifica se um objeto foi criado a partir de uma classe específica ou de uma classe ancestral (herança). Por isso, c instanceof Veiculo retorna true mesmo quando c é uma instância de Carro, que estende Veiculo. O erro comum de ordem errada ocorre quando você testa primeiro a classe mais genérica (Veiculo) e depois a específica (Carro): nesse caso, a condição c instanceof Veiculo será verdadeira primeiro, e o bloco do Carro nunca será executado. A correção é testar sempre da classe mais específica para a mais geral. Outro erro frequente é tentar usar typeof para distinguir objetos, mas typeof retorna 'object' para qualquer instância de classe — o que não ajuda. O polimorfismo, por sua vez, permite que métodos com o mesmo nome se comportem de forma diferente em cada classe; instanceof é útil quando você precisa de um comportamento que não cabe em um método polimórfico, como uma função externa que trata cada tipo de veículo de maneira distinta.

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP009 · BásicoClasse abstrata simuladaJSP012 · IntermediárioHerança múltipla com mixin
Ver todos os exercícios de JavaScript