我正在尝试学习JavaScript中的类和侦听器之间的关系。我想让监听器更改对象的属性。我也在尝试使用模块化代码。我的课程代码是:
export class Game{
constructor(){
this.prop = 1;
document.onkeydown = this.initListeners;
}
initListeners(e){
if (e.keyCode == '37') {
this.prop = 5;
console.log("Current: " + this.prop);
}
}
play(){
console.log("Playing: " + this.prop);
setTimeout(() => {
this.play();
}, 300);
}
}
在构造过程中,它将prop
属性设置为1,并且将侦听器设置为在按下左箭头键时将对象的prop
属性设置为5。{{1} }方法只是递归地打印属性。
我的app.js(包含在html中)代码如下:
play()
因此,所需的输出是,首先应打印1,然后按向左箭头键,则应开始打印5。但是,相反,当按下时,它打印import {Game} from "./game.js";
var game = new Game();
game.play();
,然后继续打印:{{ 1}}。
问题是什么?以及如何解决?