이터러블/이터레이션 프로토콜은 JavaScript 객체들이, 예를 들어 for..of 구조에서 어떠한 value 들이 loop 되는 것과 같은 iteration 동작을 정의하거나 사용자 정의하는 것을 허용한다.
const myIterable = {}
myIterable[Symbol.iterator] = function *() {
let i = 1;
while(i<=100) {
yield i++;
}
}
for (const n of myIterable) { // next가 없어도 프로토콜을 준수함으로, yield가 계속 돌수 있다.
console.log(n); // 1 ~ 100
}