将事件对象作为参数传递时出错

时间:2017-08-12 23:07:04

标签: javascript events

我有以下目标代码(简称):

var codeEditor = function() {
  ...
  // The non-highlighted code.
  this.unhighlightedCode = null;
  ...
  // "this" object
  var that = this;

  this.keys = function(e) {
    switch (e.keyCode) {
      default:;
    }
  };

  // Initialization
  this.init = function() {
    ...
    that.unhighlightedCode = document.getElementById("unhighlightedCode");
    that.unhighlightedCode.onkeydown = that.keys(event);
  }();
}

// The implementaion
var editor = new codeEditor;

问题:
在传递事件对象时,在此行that.unhighlightedCode.onkeydown = that.keys(event);中。

结果:
在Firefox中,会显示一条错误消息:TypeError: e is undefined,与Chrome Uncaught TypeError: Cannot read property 'keyCode' of undefined一样。

1 个答案:

答案 0 :(得分:2)

你不必传递事件,它自己传递,你应该引用函数而不是调用它

that.unhighlightedCode.onkeydown = that.keys;