728x90
반응형
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// it.js | |
class Log { | |
constructor() { | |
this.messages = []; | |
} | |
add(message) { | |
this.messages.push({ message, timestamp: Date.now() }); | |
} | |
// create iterator | |
[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 }; | |
} | |
} | |
} | |
} | |
let log = new Log(); | |
log.add('first log'); | |
log.add('second log'); | |
log.add('third log'); | |
for (let entry of log) { | |
console.log(`${entry.message} @ ${entry.timestamp}`); | |
} | |
728x90
반응형
'Javascript' 카테고리의 다른 글
non TDZ (0) | 2018.11.22 |
---|---|
closure (0) | 2018.11.22 |
fibonacci.js (0) | 2018.11.08 |
화살표 함수 Arrow function of javascript (0) | 2018.09.28 |
javascript require 예제 (0) | 2018.08.23 |