【发布时间】:2010-06-09 12:59:05
【问题描述】:
我在让回调函数工作时遇到了一些问题。这是我的代码:
SomeObject.prototype.refreshData = function()
{
var read_obj = new SomeAjaxCall("read_some_data", { }, this.readSuccess, this.readFail);
}
SomeObject.prototype.readSuccess = function(response)
{
this.data = response;
this.someList = [];
for (var i = 0; i < this.data.length; i++)
{
var systemData = this.data[i];
var system = new SomeSystem(systemData);
this.someList.push(system);
}
this.refreshList();
}
基本上 SomeAjaxCall 正在对数据进行 ajax 请求。如果有效,我们使用回调“this.readSuccess”,如果失败,则使用“this.readFail”。
我发现 SomeObject.readSuccess 中的“this”是全局的 this(又名窗口对象),因为我的回调函数被调用为函数而不是成员方法。我的理解是我需要使用闭包来保持“这个”,但是,我无法让它工作。
如果有人能告诉我我应该做什么,我将不胜感激。我仍在思考闭包是如何工作的,特别是在这种情况下它们将如何工作。
谢谢!
【问题讨论】:
标签: javascript callback closures this