在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) {
  ...
}