1

我正在尝试学习一些“高级”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,我一点也不知道为什么。是范围吗?是保护的东西吗?它打败了我!

编辑:我有 jQuery 导入和工作。如果我取出if障碍物,游戏就可以正常工作。

谢谢!

4

1 回答 1

4

问题是您超出了您的活动范围,您this的活动指的是文档而不是您的对象。您可以通过在局部变量中缓存对对象的引用来解决此问题that

var TypingTest = new function() {
    ...
    var that = this;
    ...
    $(document).keydown(function(e) {
        if(that._playing) {
                    // Reference point
            console.log(e);
        }
    });
}
于 2013-05-16T02:24:26.883 回答