ecmascript:iteration
文書の過去の版を表示しています。
Iteration Protocol
反復処理プロトコルはfor...of
構文で処理できるオブジェクトが実装しているべき約束事。反復可能プロトコル(Iterable Protocol)とイテレータプロトコル(Iterator Protocol)の2つで構成されている。
反復可能プロトコル
[Symbol.iterator]
メソッドを実装していること。[Symbol.iterator]
メソッドはイテレータプロトコルを実装したオブジェクトを返さなければならない。
Array、NodeList、Set、Mapなどは反復可能プロトコルを実装している。
イテレータプロトコル
next
メソッドを実装していること。next
メソッドは
interface IteratorResult<T> { done?: boolean; value?: T; }
を実装したオブジェクトを返す。valueは反復処理で取得される値。反復処理が全て終わった場合は { done: true }
を返す。
サンプル
const iterator = { count: 0, next() { if (this.count < 5) { return { value: this.count++ }; } return { done: true }; } }; const iterable = { [Symbol.iterator]() { return Object.create(iterator); } }; for (const num of iterable) { console.log(num); // => 0, 1, 2, 3, 4 } console.log(Array.from(iterable)); // => `[0,1,2,3,4]`
ecmascript/iteration.1757346046.txt.gz · 最終更新: by nullpon