이터레이션 프로토콜의 의의
만약 이터레이션 프로토콜이 존재하지 않고 Array, String, Map, DOM data structure(NodeList, HTMLCollection) 등 다양한 데이터 소스가 각자의 순회 방식을 갖는다면 사용자는 그 순회 방식을 모두 익혀야 하고 프로그램에 모두 적용해줘야 했을 것이다. 이러한 비효율을 해소해 준 것이 이터레이션 프로토콜이다.
많이 쓰이는 for of문도 iterator 프로토콜을 준수
const array = [1, 2, 3];
for (let item of array) {
console.log(item);
}
결과값
1
2
3
이렇게 표현한것도 실제로는
const array = [1, 2, 3];
const iterator = array[Symbol.iterator]();
for (;;) {
const res = iterator.next();
if (res.done) break;
console.log(res);
}
이렇게 이터레이터 프로토콜에 의하여 실제로는 이렇게 작용하고 있는 것이다.