본문 바로가기

JS/ECMAscript

이터러블 프로토콜 iterable protocol

const Iterator = (arr)=>{
let i = 0
return{
next:()=>{
return i<arr.length?{value:arr[i++],done:false}:{done:true}
}
}
}

const iterableObj = {
[Symbol.iterator](){
return Iterator([1,2,3])
}
}

for (const elem of iterableObj){
console.log(elem)
}


for of에서 이터레이터의 next()를 호출해서 done===true이면 반복을 중단하고 done===false면 계속 반복하면서 elem에 value를 할당 후 함수 본문을 실행한다.


for of 대신 전개 연산자도 쓸 수 있다. 순회 가능한 객체의 이터레이터가 반환한 value가 출력된다.

console.log(...iterableObj);


array, map, set 등의 객체는 이터러블 프로토콜을 구현한다. 다른 형태의 객체들을 일관된 문법을 써서 순회할 수 있다.


https://es6console.com/jqamj5ll/

'JS > ECMAscript' 카테고리의 다른 글

ECMAScript6 온라인 실행 환경  (0) 2018.12.31
프로미스 promise  (0) 2018.12.31
이터레이터 프로토콜 iterator protocol  (0) 2018.12.30
for of  (0) 2018.12.30
forEach  (0) 2018.12.29