【发布时间】:2011-01-08 20:28:08
【问题描述】:
如this blog post 中所述,您可以在Javascript 的匿名函数中设置this 的范围。
在对 AJAX 请求的 success 的匿名函数调用中,是否有更优雅的方法来确定 this 的范围(即不使用 that)?
例如:
var Foo = {
bar: function(id) {
var that = this;
$.ajax({
url: "www.somedomain.com/ajax_handler",
success: function(data) {
that._updateDiv(id, data);
}
});
},
_updateDiv: function(id, data) {
$(id).innerHTML = data;
}
};
var foo = new Foo;
foo.bar('mydiv');
使用调用但仍需将父对象作用域命名为that。
success: function(data) {
(function() {
this._updateDiv(id, data);
}).call(that);
}
【问题讨论】:
-
that=this模式很优雅,也很简单,并且(作为一种常见的模式)可识别。不要与之抗争。
标签: javascript jquery scope anonymous-function