Content-Length: 196963 | pFad | http://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance

Symbol.hasInstance - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Symbol.hasInstance

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.

Die statische Dateneigenschaft Symbol.hasInstance repräsentiert das bekannte Symbol Symbol.hasInstance. Der instanceof-Operator sucht dieses Symbol im rechten Operanden nach der Methode, die verwendet wird, um festzustellen, ob das Konstruktorobjekt ein Objekt als seine Instanz erkennt.

Probieren Sie es aus

class Array1 {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance);
  }
}

console.log([] instanceof Array1);
// Expected output: true

Wert

Das bekannte Symbol Symbol.hasInstance.

Eigenschaften von Symbol.hasInstance
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Der instanceof-Operator verwendet den folgenden Algorithmus, um den Rückgabewert von object instanceof constructor zu berechnen:

  1. Wenn constructor eine [Symbol.hasInstance]()-Methode hat, dann rufen Sie diese mit object als erstem Argument auf und geben das Ergebnis zurück, umgewandelt in einen Boolean. Werfen Sie einen TypeError, wenn constructor kein Objekt ist oder wenn constructor[Symbol.hasInstance] weder null, undefined noch eine Funktion ist.
  2. Andernfalls, wenn constructor keine [Symbol.hasInstance]()-Methode hat (constructor[Symbol.hasInstance] ist null oder undefined), dann bestimmen Sie das Ergebnis mit dem gleichen Algorithmus wie Function.prototype[Symbol.hasInstance](). Werfen Sie einen TypeError, wenn constructor keine Funktion ist.

Da alle Funktionen standardmäßig von Function.prototype erben, legt die Function.prototype[Symbol.hasInstance]()-Methode meist das Verhalten von instanceof fest, wenn die rechte Seite eine Funktion ist.

Beispiele

Benutzerdefiniertes instanceof-Verhalten

Sie können Ihr benutzerdefiniertes instanceof-Verhalten so implementieren, zum Beispiel:

js
class MyArray {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance);
  }
}
console.log([] instanceof MyArray); // true
js
function MyArray() {}
Object.defineProperty(MyArray, Symbol.hasInstance, {
  value(instance) {
    return Array.isArray(instance);
  },
});
console.log([] instanceof MyArray); // true

Überprüfung der Instanz eines Objekts

Genau wie Sie überprüfen können, ob ein Objekt eine Instanz einer Klasse ist, indem Sie das instanceof-Schlüsselwort verwenden, können wir auch Symbol.hasInstance für solche Überprüfungen verwenden.

js
class Animal {
  constructor() {}
}

const cat = new Animal();

console.log(Animal[Symbol.hasInstance](cat)); // true

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-symbol.hasinstance

Browser-Kompatibilität

Siehe auch









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy