Keydown侦听器不会更改javascript中object的属性

时间:2018-09-21 03:40:28

标签: javascript object ecmascript-6 listener es6-class

我正在尝试学习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}}。 问题是什么?以及如何解决?

0 个答案:

没有答案