我正在尝试创建一个递归方法,但它正在失去对this
. 这是重新创建我的问题的最简单方法:
var Foo = function() {
return {
foo : 'foo',
bar : function() {
console.log(this.foo);
setTimeout(this.bar, 500);
}
};
}
var foo = new Foo();
foo.bar();
那只会运行两次。第一次将记录foo
到控制台,第二次将记录undefined
. 然后,当然,它不再运行,因为bar
不再是 的属性,this
因为我认为它已重置为全局对象。
我尝试var that = this
了我的bar
方法和引用that.foo
,that.bar
但它没有改变任何东西。我也尝试过var that = this
我的return
陈述,但问题仍然存在。
预期结果:
富
富
富
富
... 等等
这是一个示例http://jsfiddle.net/k2hTJ/,结果如下:
富
不明确的