https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator
https://qiita.com/rana_kualu/items/e82790fa50c05b167dcc
反復可能オブジェクトで、イテレーターを返すジェネレーター関数を参照できることが期待されるプロパティ。
オブジェクトが反復可能であるためには、[Symbol.iterator] キーを持っていなければならない。
const sampleArray = [1,2,3,4,5];
for (value of sampleArray) {
console.log(value); // 1,2,3,4,5
}
// 上と等価
const iter = sampleArray[Symbol.iterator]();
for (value of iter) {
console.log(value); // 1,2,3,4,5
}
// ユーザによる定義も可能
const sampleObj = {hogeProp:3};
sampleObj[Symbol.iterator] = function* () {
for (let i = 0; i < this.hogeProp; i++) {
yield i;
}
};
for (value of sampleObj) {
console.log(value); // 0,1,2
}