再帰的なメソッドを作成しようとしていますが、へのバインドが失われていthisます。これが私の問題を再現する最も簡単な方法です:
var Foo = function() {
return {
foo : 'foo',
bar : function() {
console.log(this.foo);
setTimeout(this.bar, 500);
}
};
}
var foo = new Foo();
foo.bar();
それは2回だけ実行されます。最初fooはコンソールにログインし、2回目はログに記録しますundefined。もちろん、グローバルオブジェクトにリセットされたと想定しているためbar、のプロパティではなくなったため、実行されなくなります。this
メソッドと参照を試しvar that = thisましたが、何も変わりません。私も私の声明の上で試しましたが、問題は解決しません。barthat.foothat.barvar that = thisreturn
期待される結果:
foo
foo
foo
foo
... 等々
http://jsfiddle.net/k2hTJ/の例を次に示します。これにより、次のようになります。
foo
未定義