this
Game.prototype.restart = function () {
this.clearLocalStorage();
this.timer = setTimeout(function() {
this.clearBoard(); // what is "this"?
}, 0);
};error: Uncaught TypeError: undefined is not a function
When you invoke setTimeout(), you are actually invoking window.setTimeout(). Therefore, this.clearBoard(); refers to the window object.
Traditional solution
use
var self = this;
Game.prototype.restart = function () {
this.clearLocalStorage();
var self = this; // save reference to 'this', while it's still this!
this.timer = setTimeout(function(){
self.clearBoard(); // oh OK, I do know who 'self' is!
}, 0);
};New solution
use the
bind()method to pass in the proper reference:
Last updated
Was this helpful?