iterable 객체

let range = {
	form : 0,
	to : 10,
	step : 1,
	current : 0,
	
	// for of 문을 실행시 초기 Symbol.iterator이 실행 후 객체를 반환합니다. 
	[Symbol.iterator](){
		this.current = this.form;
		return this
	},
	
	// for of 문이 반복을 할때 마다 next() 함수가 실행이 됩니다. 
	// next() 리턴은 {done : Boolean, value : value} 형식으로 맞춰야합니다. (done = true 종료, done = false 반복)
	next(){
		if(this.current <= this.to){
			return {
				done : false, 
				value : this.current++
			}
		}else{
			return {
				done : true
			} 
		}
	}
}

for(let num of range){
	console.log(num);	// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 순으로 출력 
}

 

iterable 객체는 반복이 가능한 객체를 만드는데 사용합니다. 
반복은 배열로 가능은 하지만, iterable 객체를 사용하면 for of 문을 통해 객체를 반복 시킬 수 있습니다. 

1. for of 문이 실행 시 초기 Symbol.iterator이 실행이 되며 range 객체를 리턴합니다. 
2. 반복을 할때 마다 next() 함수가 실행이 되며 리턴에 done의 값을 보고 반복을 판단합니다. 

+ Recent posts