JSFiddle - React, Tailwind, and code Playground

by skwjdgn

JavaScript

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};
      },
      [Symbol.iterator](){return this;}
    }
  }
}
const log = new Log();

log.add("first day at sea");
log.add("second dat at mountain");

for(let entry of log){
	console.log(`${entry.message} @ ${entry.timestamp}`);
}

iter = log[Symbol.iterator]();
iter2 = log[Symbol.iterator]();

console.log(log[Symbol.iterator]());  
console.log(iter);  
console.log(log[Symbol.iterator]() == iter);  
console.log(iter2 == iter2[Symbol.iterator]());