데이터를 가지고 있는 컨테이너 객체에 대해 for … of 를 지원하기 위해서는 Symbol.iterator가 필요합니다.
예를들어 1, 2, 3 데이터를 가지고 있는 다음과 같은 객체가 있다고 할때 for … of로 데이터를 순회한다면 참 직관적입니다.
const numbers = {
data: [1, 2, 3]
};
for (const n of numbers) {
console.log(n);
}
위의 코드가 실행될 수 있으려면 다음과 같은 코드를 추가해야 합니다.
const numbers = {
data: [1, 2, 3],
[Symbol.iterator]() {
let index = 0;
const data = this.data;
return {
next() {
if (index < data.length) {
return {
value: data[index++],
done: false
};
}
return {
done: true
};
}
};
}
};
