Baseline 2025
Newly available
Die Iterator.from()
statische Methode erstellt ein neues Iterator
-Objekt aus einem Iterator oder einem iterierbaren Objekt.
Wenn object
iterierbar ist, wird seine [Symbol.iterator]()
-Methode aufgerufen, um den Iterator zu erhalten. Andernfalls wird object
als ein Iterator betrachtet. Wenn der Iterator bereits instanceof
Iterator
ist (was bedeutet, dass er Iterator.prototype
in seiner Prototypkette hat), wird er direkt zurückgegeben. Andernfalls wird ein neues Iterator
-Objekt erstellt, das den ursprünglichen Iterator umschlieÃt.
Diese Methode existiert, um benutzerdefinierte Iteratoren, die wahrscheinlich von Bibliotheken exportiert werden, in korrekte Iteratoren zu konvertieren. Alle durch Iterator.from()
zurückgegebenen Iterator-Objekte erben von einem gemeinsamen Prototyp-Objekt, das die folgenden Methoden hat:
next()
Ruft die next()
-Methode des zugrunde liegenden Iterators auf und gibt das Ergebnis zurück.
return()
Ruft die return()
-Methode des zugrunde liegenden Iterators auf und gibt das Ergebnis zurück oder gibt { value: undefined, done: true }
zurück, wenn der zugrunde liegende Iterator keine return()
-Methode hat.
Da obj
bereits ein iterierbares Objekt ist, das einen korrekten Iterator zurückgibt, wenn seine [Symbol.iterator]()
-Methode aufgerufen wird, gibt Iterator.from(obj)
denselben Iterator zurück.
const iterator = (function* () {
yield 1;
yield 2;
yield 3;
})();
const obj = {
[Symbol.iterator]() {
return iterator;
},
};
const iterator2 = Iterator.from(obj);
console.log(iterator2 === iterator); // true
Da obj2
ein iterierbares Objekt ist, das einen nicht korrekten Iterator zurückgibt, wenn seine [Symbol.iterator]()
-Methode aufgerufen wird, gibt Iterator.from(obj2)
einen neuen Iterator zurück, der den ursprünglichen Iterator umschlieÃt.
const iterator = {
current: 0,
next() {
return { value: this.current++, done: false };
},
};
const obj2 = {
[Symbol.iterator]() {
return iterator;
},
};
const iterator2 = Iterator.from(obj2);
console.log(iterator2 === iterator); // false
console.log(iterator2.next()); // { value: 0, done: false }
console.log(iterator.next()); // { value: 1, done: false }
Konvertierung eines Iterators in einen korrekten Iterator
Da obj
bereits ein korrekter Iterator ist, gibt Iterator.from(obj)
sich selbst zurück.
const obj = (function* () {
yield 1;
yield 2;
yield 3;
})();
const iterator = Iterator.from(obj);
console.log(iterator === obj); // true
Da obj2
ein nicht korrekter Iterator ist, gibt Iterator.from(obj2)
einen neuen Iterator zurück, der den ursprünglichen Iterator umschlieÃt.
const obj2 = {
current: 0,
next() {
return { value: this.current++, done: false };
},
};
const iterator = Iterator.from(obj2);
console.log(iterator === obj2); // false
console.log(iterator.next()); // { value: 0, done: false }
console.log(obj2.next()); // { value: 1, done: false }
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4