12.1 이터레이션 프로토콜
모든 객체를 이터러블(iterable) 객체로 바꿀 수 있음
1) 이터레이터를 가져와서 이터레이터 프로토콜을 구현하는 방법
class Log {
constructor(){
this.messages = [];
}
add(message){
this.messages.push({ message, timestamp: Date.now() });
}
[Symbol.iterator](){
return this.messages.values();
}
}
const log = new Log();
log.add("first day at see");
log.add("spotted whale");
log.add("spotted another vessel");
for (let entry of log) {
console.log(`${entry.message} @ ${entry.timestamp}`);
}
결과
first day at see @ 1535419744779
spotted whale @ 1535419744779
spotted another vessel @ 1535419744779
2) 이터이터를 직접 만드는 방법
class Log {
constructor(){
this.messages = [];
}
add(message){
this.messages.push({ message, timestamp: Date.now() });
}
[Symbol.iterator](){
let i = 0;
const messages = this.messages;
return {
next() {
if (i >= messages.length)
return { value: undefined, done: true };
return { value: messages[i++], done: false };
}
}
}
}
Last updated