This question already has answers here:
How to access the correct `this` inside a callback?
(11个答案)
3年前关闭。
我的问题和标题一样简单。我有一些代码可以进行AJAX调用。此代码类似于以下代码(JSFiddle):
在这种情况下,
我想知道是否还有另一种使用
(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
。