私の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より前のメソッドを使用して、この状況で必要な動作を実現するにはどうすればよいですか?