我正在尝试学习一些'高级'Javascript,所以我想我会制作一个简单的打字游戏。不幸的是,我早已陷入困境,我认为这是一个愚蠢的错误,我完全忽略了某些事情。这是我的代码:
var TypingTest = new function() {
this._playing = false;
this.Play = function() {
this._playing = true;
}
this.Stop = function() {
this._playing = false;
}
$(document).keydown(function(e) {
if(this._playing) {
// Reference point
console.log(e);
}
});
}
问题是,无论我将_playing
变量实例化为什么,都不会达到“参考点”。 this._playing
总是undefined
,我没有丝毫的线索。是范围吗?这是保护吗?它打败了我!
if
块,游戏运行正常。
谢谢!
答案 0 :(得分:4)
问题是您的活动超出了范围,您事件中的this
指的是文档而不是您的对象。您可以通过在局部变量that
中缓存对象的引用来解决此问题:
var TypingTest = new function() {
...
var that = this;
...
$(document).keydown(function(e) {
if(that._playing) {
// Reference point
console.log(e);
}
});
}