iterable을 사용하는 곳은 생각보다 많다.
일반적으로 JS의 array 객체를 많이 사용하지만 Map과 Set이라는 자료형이 존재한다.
array(list), Map, Set은 각각이 모두 iterable 한 객체이다.
let ary = [1, 2, 3];
let ite = ary[Symbol.iterator]();
ite.next(); // {value: 1, done: false}
// Map
let map = new Map();
map.set(1,'one');
map.set(2,'two');
let iteMap = map[Symbol.iterator]();
iteMap.next(); // { value: [ 1, 'one' ], done: false }
// Set
let set = new Set();
set.add(1);
set.add(2);
let iteSet = set[Symbol.iterator]();
iteSet.next(); // {value: 1, done: false}
이런식으로 ary가 array 객체로 선언된 그 순간부터 iterator는 prototype에 의해 iterable한 객체로 정의되어진다.