💡 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴
장점 : 각기 다른 컬렉션들을 똑같은 인터페이스로 순회가 쉽다.
예 : 자바스크립트의 인터페이스 (for of)
순회할 수 있는 각기 다른 자료형의 구조와는 상관없이 이터레이터라는 하나의 인터페이스로 순회가 가능해서
코드의 효율화, 숫자형 index가 아닌 string 등 다양한 인덱스를 기반으로 순회를 쉽게 할 수 있다.
*컬렉션 : 컨테이너라고도 하고, 동일한 요소들의 집합을 말함. 배열, 트리 등을 지칭
*이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰이는 규칙
*이터러블한 객체 : 반복 가능한 객체로 배열을 일반화한 객체
const mp = new Map()
mp.set('a', 1)
mp.set('b', 2)
mp.set('cccc', 3)
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)
for(let a of st) console.log(a)
/*
a, b, c
[ 'a', 1 ]
[ 'b', 2 ]
[ 'c', 3 ]
1
2
3
*/
다른 구조인 set과 map을 똑같은 for a of b 라는 이터레이터 프로토콜을 통해 순회하는 것을 볼 수 있다.