Symbol.iterator를 이용한 for … of 지원하기

데이터를 가지고 있는 컨테이너 객체에 대해 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
                };
            }
        };
    }
};

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다