En JavaScript, la palabra clave instanceof
se utiliza para determinar si un objeto es una instancia de otra clase u objeto. Este operador comprueba si el prototipo de un objeto está presente en la cadena de prototipos de un objeto.
Al utilizar instanceof
, se evalúa si un objeto es una instancia de una clase específica o de una clase que hereda de ella. La sintaxis básica es la siguiente:

La solución definitiva para acortar enlaces y gestionar tus campañas digitales de manera profesional.
• Acortamiento de enlaces instantáneo y rápido
• Páginas de perfil interactivas
• Códigos QR profesionales
• Análisis detallados de tu rendimiento digital
• ¡Y muchas más funciones gratuitas!
javascriptobjeto instanceof Clase
Donde objeto
es el objeto que se está evaluando y Clase
es la función constructora o el tipo de objeto con el que se está comparando.
Por ejemplo, consideremos el siguiente código:
javascriptclass Animal {
constructor(nombre) {
this.nombre = nombre;
}
}
class Perro extends Animal {
ladrar() {
console.log('¡Guau!');
}
}
let miPerro = new Perro('Max');
console.log(miPerro instanceof Perro); // true
console.log(miPerro instanceof Animal); // true
En este ejemplo, tenemos una clase Animal
y una clase Perro
que hereda de Animal
. Creamos una instancia de Perro
llamada miPerro
. Al evaluar miPerro instanceof Perro
, obtenemos true
, lo que indica que miPerro
es una instancia de la clase Perro
. Del mismo modo, al evaluar miPerro instanceof Animal
, también obtenemos true
, ya que Perro
es una subclase de Animal
.
Es importante tener en cuenta que instanceof
no solo verifica si un objeto es una instancia directa de una clase específica, sino también si es una instancia de cualquier clase que se encuentre en la cadena de prototipos del objeto. Por lo tanto, en el ejemplo anterior, miPerro instanceof Animal
también devuelve true
, ya que Perro
hereda de Animal
.
Es crucial utilizar instanceof
con precaución, ya que puede conducir a resultados inesperados si no se comprenden correctamente las relaciones de herencia entre las clases. Además, no se debe abusar de este operador, ya que puede indicar un diseño de código frágil y propenso a errores si se basa en él en exceso.
En resumen, instanceof
es una herramienta útil en JavaScript para verificar la relación de herencia entre objetos y clases, pero debe utilizarse con cuidado y entendimiento de su funcionamiento para evitar posibles errores y malentendidos en el código.
Más Informaciones
Claro, profundicemos un poco más en el funcionamiento y los usos de instanceof
en JavaScript.
Cuando utilizamos instanceof
, lo que realmente estamos evaluando es si el prototipo del objeto está presente en la cadena de prototipos de la clase especificada. Esto significa que instanceof
no verifica la igualdad de tipos de manera estricta, sino que examina si hay una relación de herencia entre el objeto y la clase.
Vale la pena destacar que instanceof
solo funciona con objetos creados a partir de funciones constructoras, es decir, con objetos que tienen un prototipo. No puede ser utilizado con objetos primitivos como números, cadenas o booleanos.
Veamos un ejemplo adicional para ilustrar este punto:
javascriptfunction Persona(nombre) {
this.nombre = nombre;
}
let persona1 = new Persona('Juan');
console.log(persona1 instanceof Persona); // true
console.log(persona1 instanceof Object); // true
console.log(persona1 instanceof String); // false
console.log(persona1 instanceof Number); // false
En este ejemplo, persona1
es una instancia de la función constructora Persona
. Por lo tanto, persona1 instanceof Persona
devuelve true
. Además, dado que todas las funciones constructoras en JavaScript heredan de Object
, persona1 instanceof Object
también devuelve true
.
Sin embargo, persona1
no es una instancia de String
ni de Number
, ya que no fueron utilizadas para crear persona1
. Por lo tanto, persona1 instanceof String
y persona1 instanceof Number
devuelven false
.
Una aplicación común de instanceof
es en la programación orientada a objetos, donde se utiliza para verificar el tipo de objeto antes de realizar ciertas operaciones o comportamientos específicos de esa clase. Por ejemplo:
javascriptclass Vehiculo {
conducir() {
console.log('El vehículo está en movimiento.');
}
}
class Coche extends Vehiculo {
estacionar() {
console.log('El coche está estacionado.');
}
}
class Moto extends Vehiculo {
estacionar() {
console.log('La moto está estacionada.');
}
}
let miVehiculo = new Coche();
if (miVehiculo instanceof Coche) {
miVehiculo.estacionar();
} else if (miVehiculo instanceof Moto) {
miVehiculo.estacionar();
} else {
miVehiculo.conducir();
}
En este ejemplo, dependiendo del tipo de vehículo que sea miVehiculo
, se ejecutará un comportamiento diferente. Si miVehiculo
es una instancia de Coche
, se llamará al método estacionar()
de la clase Coche
. Si es una instancia de Moto
, se llamará al método estacionar()
de la clase Moto
. En cualquier otro caso, se llamará al método conducir()
de la clase Vehiculo
.
En resumen, instanceof
es una herramienta útil en JavaScript para verificar la relación de herencia entre objetos y clases, y se utiliza comúnmente en la programación orientada a objetos para realizar comportamientos específicos según el tipo de objeto. Sin embargo, es importante comprender su funcionamiento y utilizarlo con cuidado para evitar posibles errores y malentendidos en el código.