在Javascript中向全局变量添加属性
假设我有这样一段代码:在Javascript中向全局变量添加属性,javascript,object,scope,Javascript,Object,Scope,假设我有这样一段代码: keysPressed = new Object(); document.onkeydown = function(e) { keysPressed[e.charCode] = true; } document.onkeyup = function(e) { keysPressed[e.charCode] = false; } 理论上,这会给我留下一个对象,我可以在其中按下键。w来检查当前是否按下了“w” 我可以在我的JavaScript控制台中看到,所
keysPressed = new Object();
document.onkeydown = function(e) {
keysPressed[e.charCode] = true;
}
document.onkeyup = function(e) {
keysPressed[e.charCode] = false;
}
理论上,这会给我留下一个对象,我可以在其中按下键。w
来检查当前是否按下了“w”
我可以在我的JavaScript控制台中看到,所有属性都像普通一样定义,但每当我尝试访问它们时,它都会说它们是未定义的。我怀疑这些属性在定义它们的函数中有一个局部作用域,不能在其他地方访问。有没有办法在不创建一大堆全局变量的情况下解决这个问题
提前谢谢 这里的问题是
charCode
返回一个数值。因此,它不是为w
添加属性,而是为编号87
添加属性。您希望使用String.fromCharCode
在此处获取字符串表示形式
keysPressed = new Object();
document.onkeydown = function(e) {
keysPressed[String.fromCharCode(e.charCode)] = true;
}
document.onkeyup = function(e) {
keysPressed[String.fromCharCode(e.charCode)] = false;
}
现在,像下面这样的代码将起作用(注意使用大写字母W而不是小写字母)
非常感谢你!这正是我想要的答案。
if (keysPressed.W) {
...
}