我的问题就像标题一样简单..我有一些代码可以进行AJAX调用。此代码与此类似(JSFiddle):
SELECT i.ID, MIN(s.Registered) AS 'Date', l.Name AS 'Status'
FROM Installation i
JOIN StatusLog s ON s.InstallationID = i.ID AND s.ID IN
(SELECT MIN(Registered)
FROM statuslog
WHERE status IN(5)
GROUP BY Installationid)
JOIN StatusList l ON l.ID = s.Status
在这种情况下,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();
未定义。我可以在ajax调用之前放置以下代码,并使用它而不是this
:
this
我想知道是否有另一种方法可以使用var diz = this;
而不为其创建新变量。
答案 0 :(得分:1)
在这种情况下,这是未定义的。
this.name
未定义(假设您的意思),因为这是特定于函数的上下文。在ajax的回调处理程序this
内部不再属于Test
,它属于该回调函数。
想知道是否有另一种方法可以在不创建的情况下使用它 它的新变量。
我认为如果不保存对父this
(测试版this
)的引用,您可以从函数范围访问属于更全局范围的this
。