再帰的なメソッドを作成しようとしていますが、へのバインドが失われてい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
ましたが、何も変わりません。私も私の声明の上で試しましたが、問題は解決しません。bar
that.foo
that.bar
var that = this
return
期待される結果:
foo
foo
foo
foo
... 等々
http://jsfiddle.net/k2hTJ/の例を次に示します。これにより、次のようになります。
foo
未定義