私のJavascriptユニバースの端にあるバインディングの問題に遭遇したので、Regisが推奨するように、それを通り抜けて、私の質問にたどり着きます。
function foo() {
document.body.addEventListener("click", this.bar);
}
foo.prototype.bar = function(evt) {
alert(this);
}
test = new foo();
関数参照のためにが失われるため、これはdocument.body
要素でアラートを出します。this
したがって、参照は参照bind()
を永続化するために使用する必要があります。
function foo() {
document.body.addEventListener("click", this.bar.bind(this));
}
これは、タイプの予想されるオブジェクトでアラートを出しますfoo
。
しかし、この表によると、を使用すると、ブラウザの山はうまく機能しませんbind()
。私は読んでいますapply()
がcall()
、それらは議論のある場合に適用できるようです。bind()
ECMAScript5より前のメソッドを使用して、この状況で必要な動作を実現するにはどうすればよいですか?