javascript - 函数内部 Javascript 全局变量绑定(bind)的状态

标签 javascript ajax variables scope

我正在执行 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); 部分是一个自执行函数,它给出 xthis 的值> 作为自执行函数的参数。 xthat 值保持其应有的值。

关于javascript - 函数内部 Javascript 全局变量绑定(bind)的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6696908/

相关文章:

php - PHP中的严格模式

function - 将变量名传递给 r 中的函数

javascript - Chrome 扩展程序的内容脚本中出现 XSS "Blocked a frame with origin from accessing a cross-origin frame"错误

Javascript 未在网站上加载?

javascript - 我应该为每个连接创建一个新的 Redis 客户端吗?

jquery - Ajax 表单发布不随文件发布输入类型

php - 通过ajax检查php session

JavaScript 状态循环

php - AJAX 调用后 session 变量未更新

Javascript:将用户输入分配为变量