이터레이터 패턴(iterator pattern)은 이터레이터(iterator)를 사용하여 컬렉션(collection)의 요소들에 접근하는 디자인 패턴입니다.

이를 통해 순회할 수 있는 각기 다른 자료형의 구조와는 상관없이 이터레이터라는 **하나의 인터페이스로 순회**가 가능해서 코드의 효율화, 숫자형 index가 아닌 string 등 다양한 인덱스를 기반으로 순회를 쉽게할 수 있음

자바스크립트의 인터페이스: (for of)

컬렉션 = 컨테이너 라고도 하고, 동일한 요소들의 집합을 말함. 배열, 트리 등을 지칭

이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰이는 규칙

이터러블한 객체 : 반복 가능한 객체로 배열을 일반화한 객체

const mp = new Map()
mp.set('a', 1)
mp.set('b', 1)
mp.set('cccc', 1)
const st = new Set()
st.add(1)
st.add(2)
st.add(3)
const a = []
for (let i=0; i<10; i++) a.push(i)

for (let aa of a) console.log(aa)
for (let a of mp) console.log(a)

a 는 배열

mp는 Map

다른 자료구조를 가지고 있지만 for of를 통해 반복 가능