JavaScriptの擬似クラスのthisがうまくいかないとき

擬似クラスでprototypeなどをevent.addLisner()などすると、そのときのグローバルのthisが記述したところのオブジェクトを返さないことがあります。

var handler = (function (obj){
  return function(){obj.popInfo(obj);};
})(this);

hoge.event.addListener(this.foo, 'click', handler);

handlerでthisのリンクを保持した関数オブジェクトにくるんであげて、それを引数で渡すと、プロトタイプで、thisの参照を使うことが出来ます。

Something.prototype.hello = function (obj){
  console.log("hello " + obj.name);
}