| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2016 browserbergreifend verfgbar.
Die statische Dateneigenschaft Symbol.iterator reprsentiert das bekannte Symbol Symbol.iterator. Das Iterable-Protokoll verwendet dieses Symbol, um die Methode zu finden, die den Iterator fr ein Objekt zurckgibt. Damit ein Objekt iterierbar ist, muss es einen [Symbol.iterator]-Schlssel besitzen.
const iterable = {};
iterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
console.log([...iterable]);
// Expected output: Array [1, 2, 3]
Das bekannte Symbol Symbol.iterator.
Eigenschaften von Symbol.iterator | |
|---|---|
| Schreibbar | nein |
| Aufzhlbar | nein |
| Konfigurierbar | nein |
Immer wenn ber ein Objekt iteriert werden soll (beispielsweise zu Beginn einer for...of-Schleife), wird seine Methode [Symbol.iterator]() ohne Argumente aufgerufen. Der zurckgegebene Iterator wird verwendet, um die Werte fr die Iteration abzurufen.
Einige integrierte Typen haben ein Standardverhalten fr die Iteration, andere Typen (wie Object) hingegen nicht. Zu den integrierten Typen mit einer Methode [Symbol.iterator]() gehren:
Array.prototype[Symbol.iterator]()TypedArray.prototype[Symbol.iterator]()String.prototype[Symbol.iterator]()Map.prototype[Symbol.iterator]()Set.prototype[Symbol.iterator]()Weitere Informationen finden Sie unter Iterationsprotokolle.
Sie knnen eigene iterierbare Objekte wie folgt erstellen:
const myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable]; // [1, 2, 3]
Alternativ knnen iterierbare Objekte mithilfe einer berechneten Eigenschaft direkt innerhalb einer Klasse oder eines Objekts definiert werden:
class Foo {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
}
const someObj = {
*[Symbol.iterator]() {
yield "a";
yield "b";
},
};
console.log(...new Foo()); // 1, 2, 3
console.log(...someObj); // 'a', 'b'
Wenn die Methode [Symbol.iterator]() eines iterierbaren Objekts kein Iteratorobjekt zurckgibt, ist das iterierbare Objekt nicht wohlgeformt. Seine Verwendung als iterierbares Objekt fhrt wahrscheinlich zu Laufzeitausnahmen oder fehlerhaftem Verhalten:
const nonWellFormedIterable = {};
nonWellFormedIterable[Symbol.iterator] = () => 1;
[...nonWellFormedIterable]; // TypeError: [Symbol.iterator]() returned a non-object value
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-symbol.iterator |
Symbol.iterator in core-jsArray.prototype[Symbol.iterator]()TypedArray.prototype[Symbol.iterator]()String.prototype[Symbol.iterator]()Map.prototype[Symbol.iterator]()Set.prototype[Symbol.iterator]()arguments[Symbol.iterator]()Segments.prototype[Symbol.iterator]()SymbolObject/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |