2017-01-19 9 views
0

HTML要素のEventListenerにオブジェクトメソッドを追加しようとしています。しかし、私がそうすると、this変数はオブジェクトではなく要素そのものになります。ここでオブジェクトメソッドをhtml要素リスナーにリンクする

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

Function.prototype.bind()助けてください - 引数をとり、それをthis値として使用します。

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

正確に何が必要なのですか。 – George

関連する問題