prototype でつけた関数をファーストクラスで使うと this がしぬ
はまりかけた。
コンストラクタで設定すればおk。
function Hoge() { var me = this; me.print1 = function() { console.log(me); }; } Hoge.prototype.print2 = function() { console.log(this); } var hoge = new Hoge(); hoge.print1(); // Hoge {print1: function, print2: function} hoge.print2(); // Hoge {print1: function, print2: function} var apply = function(f) { f(); }; apply(hoge.print1); // Hoge {print1: function, print2: function} apply(hoge.print2); // undefined
昔々にこれではまっていたようだ。