我正在执行 AJAX 调用(使用 dojo),我想知道将调用对象传递给回调函数的最佳方法
var that = this;
dojo.xhrGet({
url : 'script.php',
handleAs : "javascript",
load : function(response){
/*The callback on success*/
console.log('Ajax Completed Successfully for: ' + that.name);
}
});
我的问题是 load
是在“编译时”创建的,还是在“运行时”评估的。基本上,如果 that
的值在创建 var that = this
时和 AJAX 返回并调用 load
后调用它时发生变化,此更改会反射(reflect)在 load
中吗?如果是这样,那么确保 AJAX 返回信号调用正确对象的最佳实践是什么?我是否必须为每个对象创建特定的加载函数?
谢谢
最佳答案
您可以将负载封闭在闭合
内:
(function(that){
dojo.xhrGet({
url : 'script.php',
handleAs : "javascript",
load : function(response){
/*The callback on success*/
console.log('Ajax Completed Successfully for: ' + that.name);
}
});
})(this);
(function(x){ })(x);
部分是一个自执行函数,它给出 x
或 this
的值> 作为自执行函数的参数。 x
或 that
值保持其应有的值。
关于javascript - 函数内部 Javascript 全局变量绑定(bind)的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6696908/