This question already has answers here:
How to access the correct `this` inside a callback?
                            
                                (11个答案)
                            
                    
                3年前关闭。
        

    

我的问题和标题一样简单。我有一些代码可以进行AJAX调用。此代码类似于以下代码(JSFiddle):

function Test() {
    this.name = "U don't wanna know my name..";
}
Test.prototype.ajax = function() {
    $.ajax("url/path", data, function() {
        alert(this.name);
   });
};

var test = new Test();
test.ajax();


在这种情况下,this是未定义的。我可以将以下代码放在ajax调用之前,并使用它代替this

var diz = this;


我想知道是否还有另一种使用this而不为其创建新变量的方法。

最佳答案

在这种情况下,这是不确定的。


this.name是未定义的(假设是您定义的),因为它特定于函数的上下文。在该ajax的回调处理程序this中,不再属于Test,它属于该回调函数。


  想知道是否还有另一种使用此方法而不创建一个
  它的新变量。


我不认为无需保存对父代的this(测试的this)的引用,就可以从函数的作用域访问属于更全局范围的this

09-10 05:14
查看更多