Junior
¿Qué verifica el operador instanceof en JavaScript?
sobes.tech AI
Respuesta de la IA
El operador instanceof en JavaScript verifica si un objeto es una instancia de una clase o constructor específico.
Principio de funcionamiento:
- El operador
instanceofcomprueba la presencia deprototypedel constructor en la cadena de prototipos del objeto. - Si
prototypedel constructor está presente en la cadena, el resultado estrue. - De lo contrario, el resultado es
false.
Ejemplos:
// Crear una clase
class Animal {
// Constructor
constructor(name) {
this.name = name;
}
}
// Crear una instancia de la clase
let dog = new Animal("Buddy");
// Verificar si dog es una instancia de Animal
console.log(dog instanceof Animal); // true
// Verificar si dog es una instancia de Object (lo es, a través de la cadena de prototipos)
console.log(dog instanceof Object); // true
// Verificar si dog es una instancia de Array (no lo es)
console.log(dog instanceof Array); // false
// Verificación con tipos integrados
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 se comporta de manera específica)
// Para primitivos creados con new
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
Características:
instanceoffunciona a través de la cadena de prototipos, por lo que el resultado puede sertruepara constructores padres.- Para tipos primitivos (string, number, boolean, null, undefined, symbol, bigint),
instanceofgeneralmente devuelvefalsesi no fueron creados mediante el objeto envoltorio correspondiente (new String(),new Number(), etc.). - Puede ser inexacto cuando se trabaja con diferentes contextos de ejecución de JavaScript (por ejemplo, diferentes ventanas del navegador o iframe), ya que cada contexto tiene sus propios constructores.
Enfoques similares para verificar el tipo:
typeof: Devuelve una cadena que indica el tipo de datos básico (string, number, boolean, object, function, undefined, symbol, bigint). No es adecuado para verificar la pertenencia a una clase específica.Object.prototype.toString.call(): Devuelve una cadena más precisa con el tipo del objeto ("[object Array]","[object Date]", etc.).
En general, instanceof es útil para verificar si un objeto pertenece a una clase o a su ancestro en la jerarquía de herencia.