【问题标题】:Adding Attributes to Global Variables in Javascript在 Javascript 中为全局变量添加属性
【发布时间】:2012-04-20 11:43:18
【问题描述】:

假设我有这样一段代码:

keysPressed = new Object();
document.onkeydown = function(e) {
    keysPressed[e.charCode] = true;
}
document.onkeyup = function(e) {
    keysPressed[e.charCode] = false;
}

理论上这应该给我留下一个对象,我可以去keysPressed.w检查当前是否按下了'w'。

我可以在我的 JavaScript 控制台中看到所有属性都像正常一样定义,但是每当我尝试访问它们时,它都会说它们是未定义的。我怀疑这些属性在定义它们的函数内具有本地范围,并且无法在其他地方访问。有没有什么办法可以在不创建一大堆全局变量的情况下解决这个问题?

提前致谢!

【问题讨论】:

    标签: javascript object scope


    【解决方案1】:

    这里的问题是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) {
      ...
    }
    

    【讨论】:

    • 非常感谢!这正是我正在寻找的答案。
    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2021-08-18
    • 2011-05-28
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多