Javascript单例函数不工作
Javascript singleton function not working
我正试图学习一点"高级"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
块,游戏工作正常。
谢谢!
问题是您超出了事件的范围,事件中的this
指的是文档而不是您的对象。您可以通过在本地变量that
中缓存对对象的引用来修复此问题:
var TypingTest = new function() {
...
var that = this;
...
$(document).keydown(function(e) {
if(that._playing) {
// Reference point
console.log(e);
}
});
}
相关文章:
- 咖啡的Javascript订单总数无法使函数正常工作.请协助
- removeClass函数没有'工作不正常
- 你能解释一下这个阶乘函数是如何工作的吗?
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- jQuery加载的async和ready函数不工作
- 更改智能表中的页面将停止JQuery函数的工作
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- jQuery函数不能只在一个页面上工作
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 从js引擎的角度来看闭包和构造函数是如何工作的
- appendChild在函数外部工作,但在函数内部不工作
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 由于某种原因,我的JavaScript函数无法工作
- 为什么递归生成器函数没有't在ES2015工作
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- Angular JS-工作函数中的“错误:[$interpole:interr]Can't interpole:
- 简化工作函数以替换特定单词
- 为什么不在回调中工作函数?
- InnerHTML不工作:函数未定义