我正在尝试将对象方法添加到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;
}
}
然而,我觉得这不是最优雅的格式化方式。如何以对象的方法记住它所分离的对象的方式对其进行编程?
答案 0 :(得分:1)
Function.prototype.bind()
可能有所帮助 -
它需要一个参数并将其用作this
值。
var foo = new Foo();
var boundUpdate = foo.update.bind(foo);
boundUpdate();