1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
'use strict'; /* イテラブルなオブジェクトは、イテレータを返す関数Symbol.iteratorを持つオブジェクト イテレータは、イテレータリザルトを返却する関数nextを持つオブジェクト イテレータリザルトは、valueとdoneを持つオブジェクト */ const p = console.log; const getIterableObject = (max) => { let cnt = 0; const iterator = { next: () => { cnt++; const value = cnt; const done = max < value; return { value, done }; }, }; const o = {}; o[Symbol.iterator] = () => iterator; return o; }; const main = () => { const o = getIterableObject(5); for (const v of o) { p(v); } }; main(); |
1 2 3 4 5 |
1 2 3 4 5 |