我有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