我有JS代码大致是这样的:异步JavaScript和客体永久性
function myObject()
{
this.a = 13;
this.fetchData = function()
{
alert(this.a);
getData(this.processData);
}
this.processData = function(data)
{
// do stuff with data
alert(this.a);
}
this.fetchData();
}
function getData(callback)
{
// do async request for data and call callback with the result
}
我的问题是:该功能fetchData有通过这关键字访问我一个变量,但其他函数processData不被调用getData。我明白为什么会发生这种情况,但不知道如何解决这个问题。
你会如何处理这个问题,最好在OOP风格? (该功能的getData必须是可用到多类)
+1:对于选项2,你可以调用getData(function(){this.processData();});而不是getData(thisProcessData); – 2011-02-14 10:27:36
@Eric:不,那不行。 `this`完全由函数的调用方式来定义,而不是定义在哪里。你的`getData(function(){this.processData();});`会和getData(this.processData)有完全相同的问题;`但你可以使用闭包(我已经添加了一个闭包例子)。 – 2011-02-14 10:28:50