Hi im trying to make a clock Class that when I call it, it will print in terminal current time every 1 second. The first output is printed correctly but the problem is when the loop of interval go to second, my render method cannot read this. template. I tried to console.log it and the result is undefined. can someone help with my code? thank you
class Clock {
constructor({ template }) {
this.template = template
}
render() {
console.log(this.template)
let date = new Date()
let hours = date.getHours();
if (hours < 10) hours = '0' + hours;
let mins = date.getMinutes();
if (mins < 10) mins = '0' + mins;
let secs = date.getSeconds();
if (secs < 10) secs = '0' + secs;
let output = this.template
.replace('h', hours)
.replace('m', mins)
.replace('s', secs);
console.log(output);
}
stop() {
clearInterval(this.timer)
}
start() {
this.render()
this.timer = setInterval(this.render, 1000)
}
}
let clock = new Clock({ template: 'h:m:s' });
clock.start();