Symbol.hasInstance
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
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
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
Specification |
---|
ECMAScript Language Specification # sec-symbol.hasinstance |
Compatibilidad con navegadores
BCD tables only load in the browser