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 → falseSOBRE 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