You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类中初始化对象时出现ReferenceError: events未定义问题求助

问题分析与解决

错误根源

你在构造函数里直接写 keys = {} 和 events = {},这不是给类的实例属性赋值,而是在尝试操作全局变量。

  • keys 没报错,是因为你的全局作用域里刚好存在同名变量(比如浏览器环境的全局对象上有keys,或是你之前的代码无意间定义过全局keys)。
  • events 在全局作用域中不存在,JS引擎找不到这个变量,所以抛出了ReferenceError。

正确代码写法

要给类的实例属性赋值,必须用this关键字指向当前实例:

class Keyboard {
    keys;
    events;

    constructor() {
        this.keys = {};
        this.events = {};
    }
}

你也可以直接在类的字段声明时初始化,省去构造函数里的赋值步骤:

class Keyboard {
    keys = {};
    events = {};
}

额外说明

JS的作用域规则是:当前作用域找不到变量时,会逐层向上查找。如果到全局作用域还找不到,就会抛出未定义错误。这个问题和赋值顺序完全无关,调换keys和events的顺序,只要全局没有events变量,错误就一定会出现。

内容的提问来源于stack exchange,提问作者Crih.exe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:27:19