将对象方法链接到html元素侦听器

时间:2017-01-19 03:39:38

标签: javascript html

我正在尝试将对象方法添加到HTML元素上的EventListener。但是当我这样做时,this变量将成为元素本身而不是对象。

class Foo {
  constructor(element, data) {
    this.data = data;
    this.input = element;
    this.input.oninput = this.update;
  }

  update() {
    this.data; // The context has changed to the element
  }
}

这是我的解决方法:

class Foo {
  constructor(element, data) {
    this.data = data;
    this.input = element;
    this.input.Foo = this;
    this.input.oninput = this.update;
  }

  update() {
    this.Foo.data;
  }
}

然而,我觉得这不是最优雅的格式化方式。如何以对象的方法记住它所分离的对象的方式对其进行编程?

1 个答案:

答案 0 :(得分:1)

Function.prototype.bind()可能有所帮助 - 它需要一个参数并将其用作this值。

var foo = new Foo();
var boundUpdate = foo.update.bind(foo);
boundUpdate();