9

したほうがいいのか、

asset.addEventListener("load", function () {
  this.emit({
    type: "load",
    asset: asset
  });
}.bind(this), false);

または

var scope = this;

asset.addEventListener("load", function () {
  scope.emit({
    type: "load",
    asset: asset
  });
}, false);

this関数をバインドするか、参照を変数に格納するだけのほうがよいでしょうか?

4

4 に答える 4

2

混乱を避けるために、2番目のオプションの方が良いと思います。の使用はthis、多くの JavaScript の問題の原因となっているため、回避できる場合は回避する必要があると思います。ちなみに、これはKnockoutなどのライブラリでも行われています。

キーワードについて詳しく知りたい場合は、さまざまなコンテキストでthisさまざまな値が使用できることをわかりやすく説明しています: http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/this

于 2013-06-21T18:16:55.783 に答える
-1

どちらも、後で削除できない無名関数を作成するためです。

var scope = this;
var handler = function () {
  scope.emit({
    type: "load",
    asset: asset
  });
};

asset.addEventListener("load", handler, false);
于 2013-06-21T18:20:36.720 に答える