Iterator.from()
Baseline
2025
Newly available
Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức tĩnh Iterator.from() tạo một đối tượng Iterator mới từ một iterator hoặc đối tượng iterable.
Cú pháp
Iterator.from(object)
Tham số
Giá trị trả về
Nếu object là một iterable, phương thức [Symbol.iterator]() của nó được gọi để lấy iterator. Ngược lại, object được giả định là một iterator. Nếu iterator đã là instanceof Iterator (tức là có Iterator.prototype trong chuỗi prototype của nó), nó được trả về trực tiếp. Ngược lại, một đối tượng Iterator mới được tạo ra bọc iterator gốc.
Mô tả
Phương thức này tồn tại để chuyển đổi các iterator tùy chỉnh, có thể được xuất bởi các thư viện, thành các iterator chuẩn. Tất cả các đối tượng iterator do Iterator.from() trả về đều kế thừa từ một đối tượng prototype chung, có các phương thức sau:
Ví dụ
>Chuyển đổi iterable thành iterator chuẩn
Vì obj đã là iterable trả về iterator chuẩn khi gọi phương thức [Symbol.iterator](), Iterator.from(obj) trả về iterator đó.
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
Vì obj2 là iterable trả về iterator không chuẩn khi gọi phương thức [Symbol.iterator](), Iterator.from(obj2) trả về iterator mới bọc iterator gốc.
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 }
Chuyển đổi iterator thành iterator chuẩn
Vì obj đã là iterator chuẩn, Iterator.from(obj) trả về chính nó.
const obj = (function* () {
yield 1;
yield 2;
yield 3;
})();
const iterator = Iterator.from(obj);
console.log(iterator === obj); // true
Vì obj2 là iterator không chuẩn, Iterator.from(obj2) trả về iterator mới bọc iterator gốc.
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 }
Đặc điểm kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-iterator.from> |