Junior
O que verifica o operador instanceof em JavaScript?
sobes.tech IA
Resposta da IA
O operador instanceof em JavaScript verifica se um objeto é uma instância de uma classe ou construtor específico.
Princípio de funcionamento:
- O operador
instanceofverifica a presença deprototypedo construtor na cadeia de protótipos do objeto. - Se
prototypedo construtor estiver presente na cadeia, o resultado étrue. - Caso contrário, o resultado é
false.
Exemplos:
// Criar uma classe
class Animal {
// Construtor
constructor(name) {
this.name = name;
}
}
// Criar uma instância da classe
let dog = new Animal("Buddy");
// Verificar se dog é uma instância de Animal
console.log(dog instanceof Animal); // true
// Verificar se dog é uma instância de Object (é, através da cadeia de protótipos)
console.log(dog instanceof Object); // true
// Verificar se dog é uma instância de Array (não é)
console.log(dog instanceof Array); // false
// Verificação com tipos embutidos
let arr = [1, 2, 3];
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); // true
let num = 123;
console.log(num instanceof Number); // false (para primitivos, instanceof comporta-se de forma específica)
// Para primitivos criados com new
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
Características:
instanceoffunciona através da cadeia de protótipos, portanto, o resultado pode sertruepara construtores pai.- Para tipos primitivos (string, number, boolean, null, undefined, symbol, bigint),
instanceofgeralmente retornafalsese não foram criados através do objeto de envolvimento correspondente (new String(),new Number(), etc.). - Pode ser impreciso ao trabalhar com diferentes contextos de execução do JavaScript (por exemplo, diferentes janelas do navegador ou iframe), pois cada contexto tem seus próprios construtores.
Abordagens semelhantes para verificar o tipo:
typeof: Retorna uma string indicando o tipo de dado básico (string, number, boolean, object, function, undefined, symbol, bigint). Não é adequado para verificar a pertença a uma classe específica.Object.prototype.toString.call(): Retorna uma string mais precisa com o tipo do objeto ("[object Array]","[object Date]", etc.).
Em geral, instanceof é útil para verificar se um objeto pertence a uma classe ou a seu ancestral na hierarquia de herança.