javascript - 在事件处理程序中访问对象实例

标签 javascript dom event-handling

我有以下代码:

var myObj = {

  inputs: document.getElementsByTagName('input'),

  attachKeyEvent: function() {
    for ( var i = 0; i < this.inputs.length; i++ ) {
        this.inputs[i].onkeypress = this.getChar;
        console.log(this); // => returns ref to myObj
    }
  },

  getChar: function(e) {
    console.log(this); // => [Object HTMLInputElement]
    // get a reference to myObj
  }
}

我有一个包含两个 <input type="text" /> 的 DOM 结构元素。我需要编写几个方法来增强按键事件。

如何获取对 getChar() 中对象实例的引用?

最佳答案

像这样...

var myObj = {

  inputs: document.getElementsByTagName('input'),

  attachKeyEvent: function() {
    var me = this;
    var handler = function(){
        me.getChar.apply(me, arguments);
    }
    for ( var i = 0; i < this.inputs.length; i++ ) {
        this.inputs[i].onkeypress = handler;
        console.log(this); // => returns ref to myObj
    }
  },

  getChar: function(e) {
    console.log(this); // => [Object HTMLInputElement]
    // get a reference to myObj
  }
}

关于javascript - 在事件处理程序中访问对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922647/

相关文章:

javascript - 流畅的内容加载,怎么做到的?

javascript - 谷歌闭包中的 DomHelper 是什么?

javascript - 在 React.js 中,为什么我们不必传递参数事件处理函数?

javascript - Backbone.js 访问另一个 View 函数

javascript - 仅将 Object3D 中包含的网格导出到 Three.js 中的 GLTF

javascript - 将网页段落中的每个单词替换为包含该文本的按钮

javascript - 单击更改 div 类

java - 在 GWT 中,如果按下 Shift 按钮,如何从树中的 SelectionEvent 知道

javascript - 如何将事件对象传递给对象内的函数

javascript - Ajax POST 方法将字符串中的 "+"值转换为 ""为什么?