iterable 객체
- for..of를 사용 가능한 객체
- 배열을 일반화한 객체
- Symbol.iterator(특수 내장 심볼) 메서드를 가지고 있는 객체
Symbol.iterator
- iterator(이터레이터)라는 객체를 반환하는 메서드
iterator
next
- { done: Boolean, value: any } 객체를 반환하는 iterator의 메서드
done = true
는 반환이 종료되었음을 의미
done = false
는 value에 다음 값이 저장
for..of
- Symbol.iterator를 호출
- 반환 된 iterator만을 대상으로 동작
예시
let range = {
from: 1,
to: 5
}
range[Symbol.iterator] = function() {
const iterator = {
current: this.from,
last: this.to,
next() {
if (this.current <= this.last) {
return { done: false, value: this.current++ }
} else {
return {done: true }
}
}
}
return iterator
}
for (let num of range) {
console.log(num)
}