I have this simple code:
var Modules = (function() {
'use strict';
return {
TIMER: function (){
var timer = null;
return {
time: 100,
init: function() {
this.counter();
this.timer = window.setInterval(this.counter, 1000);
},
counter: function() {
this.time -= 1;
if (this.time <= 0) {
window.clearInterval(this.timer);
alert('Time expired');
}
console.log(this.time);
this.viewer();
},
viewer: function() {
document.getElementById('timer').innerHTML = this.time;
}
}
}
};
}());
Modules.TIMER().init();
<div id="timer"></div>
And something is wrong because I got 2 errors:
this.viewer is not a function
and
NaN of this.time
What it wrong with my design pattern running over interval?
After extend TIMER to reset method:
reset: function() {
this.time = 100;
}
and call it outside as:
Modules.TIMER().reset();
?
I got
this.time is not defined
.
Or inside init:
jQuery("body").on('keyup mouseup', function (e) {
this.reset();
});
I got error:
this.reset() is not s function.