Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Seit March 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Der Iterator() Konstruktor ist vorgesehen, als Oberklasse anderer Klassen verwendet zu werden, die Iteratoren erstellen. Er erzeugt einen Fehler, wenn er alleine instanziiert wird.
Hinweis: Iterator() kann nur mit new konstruiert werden. Der Versuch, ihn ohne new aufzurufen, löst einen TypeError aus. Außerdem kann Iterator() nicht wirklich selbst konstruiert werden – es wird normalerweise implizit durch super() Aufrufe innerhalb des Konstruktors einer Unterklasse konstruiert.
Keine.
Ein neues Iterator Objekt.
Wenn new.target die Iterator Funktion selbst ist, d.h. wenn der Iterator Konstruktor selbst konstruiert wird.
Iterator stellt eine abstrakte Klasse dar — eine Klasse, die allgemeine Dienstprogramme für ihre Unterklassen bereitstellt, aber nicht selbst instanziiert werden soll. Sie ist die Oberklasse aller anderen Iterator-Klassen und wird verwendet, um Unterklassen zu erstellen, die spezifische Iterationsalgorithmen implementieren — nämlich müssen alle Unterklassen von Iterator eine next() Methode implementieren, wie es das Iterator-Protokoll erfordert. Da Iterator die next() Methode tatsächlich nicht bereitstellt, macht es keinen Sinn, einen Iterator direkt zu konstruieren.
Sie können auch Iterator.from() verwenden, um eine Iterator Instanz aus einem vorhandenen iterierbaren oder Iterator-Objekt zu erstellen.
Das folgende Beispiel definiert eine benutzerdefinierte Datenstruktur, Range, die Iteration ermöglicht. Um ein Objekt iterierbar zu machen, können wir eine [Symbol.iterator]() Methode in Form einer Generatorfunktion bereitstellen:
Dies funktioniert, ist aber nicht so elegant wie die Arbeitsweise eingebauter Iteratoren. Es gibt zwei Probleme:
Wir können die Implementierung eingebauter Iteratoren, wie z.B. Map-Iteratoren, nachahmen, indem wir Iterator als Unterklasse verwenden. Dies ermöglicht es uns, zusätzliche Eigenschaften zu definieren, wie z.B. [Symbol.toStringTag], während die Iterator-Hilfsmethoden auf dem zurückgegebenen Iterator verfügbar sind.
Das Unterklassenmuster ist nützlich, wenn Sie viele benutzerdefinierte Iteratoren erstellen möchten. Wenn Sie ein vorhandenes iterierbares oder Iterator-Objekt haben, das nicht von Iterator erbt, und Sie nur die Iterator-Hilfsmethoden aufrufen möchten, können Sie Iterator.from() verwenden, um eine einmalige Iterator Instanz zu erstellen.
| ECMAScript® 2027 Language Specification # sec-iterator-constructor |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.