javascript - 使用 addEventListener 后未定义
问题描述
我对 Javascript 很陌生,正在尝试将我用 python 制作的游戏翻译成 javascript。我目前正在尝试为游戏获取键盘输入。每当我运行它时,它都会给我以下错误: Uncaught TypeError: Cannot read property '0' of undefined(at line 4 in this example)
Board 是一个用于存储板的二维数组,我在 addEventListener 语句之前测试过 Board 不是未定义的。
为什么会发生这个错误,我应该怎么做才能解决它。如前所述,我是 javascript 的完整初学者,因此将不胜感激简单的解释。亲切的问候
document.addEventListener('keydown', function(event){
if(event.keyCode == 65){
console.log(Board)
Board[this.block1[0]][this.block1[1]]=null;
Board[this.block2[0]][this.block2[1]]=null;
Board[this.block3[0]][this.block3[1]]=null;
Board[this.block4[0]][this.block4[1]]=null;
解决方案
this
在您的代码中不是您期望的那样。如果block1
etc 是局部变量,请不带this.
. 如果它们是封装对象的成员,请将回调函数更改为使用箭头语法来this
引用您的对象:document.addEventListener('keydown', event => { /*...*/ })
推荐阅读
- java - 在java中运行时找不到sshpass命令
- c++ - 在 GCC/clang 上调用模板类的模板成员函数失败,但适用于 MSVC
- constants - Labview - 管理大量常量
- c++ - 如果条件检查多个向量大小相等
- python - 使用 BeautifulSoup 从网页中提取某些内容时遇到问题
- c# - 使用 MassTransit SendEndpoint 发送消息时未找到队列
- c - 如何在 C 中使用 struct 修复无限循环
- arrays - 如何将 PS 数组与 mongoDB 进行比较以查找已删除的项目?
- reactjs - 无法从“enzyme-adapter-react-16”导入适配器;TypeError:超级表达式必须为空或函数,而不是未定义
- python - 如何过滤 INSIDE 外键集?