Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.

View in English Always switch to English

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 ⁨abril de 2017⁩.

O symbol bem-conhecido Symbol.hasInstance é usado para determinar se um objeto construtor reconhece um objeto como de sua instância. O comportamento do operador instanceof pode ser customizado por este symbol.

Property attributes of Symbol.hasInstance
Writableno
Enumerableno
Configurableno

Exemplos

Você pode implementar o comportamento customizado do seu instanceof deste jeito; por exemplo:

js
class MyArray {
  static [Symbol.hasInstance](instance) {
    return this.prototype.isPrototypeOf(instance) || Array.isArray(instance);
  }
}

console.log([] instanceof MyArray); // true
console.log(new MyArray() instanceof MyArray); // true
console.log(new Image() instanceof MyArray); // false

class MySubArray extends MyArray {}
console.log(new MySubArray() instanceof MySubArray); // true
console.log(new MySubArray() instanceof MyArray); // true
console.log(new MyArray() instanceof MySubArray); // false

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.hasinstance

Compatibilidade com navegadores

Veja também