反復可能オブジェクトを定義するプロトコル
const range = {
from: 1, to: 5,
[Symbol.iterator]() {
let current = this.from;
return {
next: () => current <= this.to
? { value: current++, done: false }
: { value: undefined, done: true }
};
}
};
for (const n of range) console.log(n); // 1,2,3,4,5Array・Map・Set・String・NodeListはイテラブル。Symbol.iteratorを実装することでfor...ofやスプレッドが使えるようになる。