Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
Symbol.hasInstance
Baseline
Ampliamente disponible
Esta característica está consolidada y funciona en muchos dispositivos y versiones de navegador. Está disponible en todos los navegadores desde abril de 2017.
El símbolo conocido como Symbol.hasInstance se utiliza para determinar si un objeto constructor reconoce un objeto como su instancia. El comportamiento del operador instanceof puede personalizarse mediante este símbolo.
Pruébalo
class Array1 {
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
}
console.log([] instanceof Array1);
// Expected output: true
Atributos de la propiedad Symbol.hasInstance | |
|---|---|
| Sobrescribir | No |
| Numerable | No |
| Configurable | No |
Ejemplos
>Comportamiento de instanceof personalizado
Podrías personalizar el comportamiento de instanceof de la siguiente manera, por ejemplo:
class MyArray {
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
}
console.log([] instanceof MyArray); // true
function MyArray() {}
Object.defineProperty(MyArray, Symbol.hasInstance, {
value: function (instance) {
return Array.isArray(instance);
},
});
console.log([] instanceof MyArray); // true
Comprobación de la instancia de un objeto
De la misma manera que se puede comprobar si un objeto es una instancia de una clase utilizando la palabra clave instanceof, también podemos utilizar Symbol.hasInstance para dichas comprobaciones.
class Animal {
constructor() {}
}
const cat = new Animal();
console.log(Animal[Symbol.hasInstance](cat)); // true
Especificaciones
| Especificación |
|---|
| ECMAScript® 2027 Language Specification> # sec-symbol.hasinstance> |
Compatibilidad con navegadores
Véase también
Ayuda a mejorar MDN
Esta página se modificó por última vez el por colaboradores de MDN.
