javascript - 如何给监听事件的外部回调函数传递this和e?

 

问题描述:

相关代码

 constructor() {
    var _this = this;
    window.addEventListener("keydown", _this.keyDownEvent(event, _this), false);
  }

  keyDownEvent(e, _this) {
    console.log(e.keyCode)        
  }

找了一天相关的问题,实在是没有找到解决方法,求大佬帮忙看下。
我试过e、event、this.event都报错了
Uncaught TypeError: Cannot read properties of undefined (reading 'keyCode')
因为需要用到keyCode,请问有什么办法可以解决吗?(可以的话,请使用原生代码。)


 

第 1 个答案:

constructor() {
    this.keyDownEvent = this.keyDownEvent.bind(this);
    window.addEventListener("keydown", this.keyDownEvent, false);
}

keyDownEvent(e) {

    console.log(e.keyCode)
}

 

第 2 个答案:

把keyDownEvent放在匿名函数里面就行了

  class demo {
    constructor() {
      var _this = this;
      window.addEventListener("keydown", function (event) {
        _this.keyDownEvent(event, _this)
      }, false);
    }

    keyDownEvent (e, _this) {
      console.log(e.keyCode)
    }
  }
  let d = new demo()

image.png

匿名函数改为箭头函数更方便:

 class demo {
    constructor() {
      window.addEventListener("keydown",  (event) => {
        this.keyDownEvent(event, this)
      }, false);
    }

    keyDownEvent (e, _this) {
      console.log(e.keyCode, _this)
    }
  }
  let d = new demo()

这个是element ui vue3的表格筛选,我想做的事如果我单选他返回true,这样没问题,但是如果我多选,我想多选的每个都符合才返回true,这个应该怎么写啊? <el-ta ...