[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator [Back]  [Original]

Symbol.iterator - 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.iterator

Baseline
Weitgehend verfgbar

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.

In diesem Artikel

Probieren Sie es aus

const iterable = {};

iterable[Symbol.iterator] = function* () {
  yield 1;
  yield 2;
  yield 3;
};

console.log([...iterable]);
// Expected output: Array [1, 2, 3]

Wert

Das bekannte Symbol Symbol.iterator.

Eigenschaften von Symbol.iterator
Schreibbarnein
Aufzhlbarnein
Konfigurierbarnein

Beschreibung

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:

Weitere Informationen finden Sie unter Iterationsprotokolle.

Beispiele

Benutzerdefinierte iterierbare Objekte

Sie knnen eigene iterierbare Objekte wie folgt erstellen:

js
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:

js
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'

Nicht wohlgeformte iterierbare Objekte

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:

js
const nonWellFormedIterable = {};
nonWellFormedIterable[Symbol.iterator] = () => 1;
[...nonWellFormedIterable]; // TypeError: [Symbol.iterator]() returned a non-object value

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-symbol.iterator

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page