“this”在以下javascript中引用了什么?

免责声明:我问的是具体用途,而不是一般用途。 所以,请不要谷歌/复制/粘贴速度答案(:

我有以下javascript / jquery代码:

 var req = {}; function getData() { var fromPage = 0; var toPage = 1; req = $.ajax({ url: "/_vti_bin/lists.asmx", type: "POST", dataType: "xml", data: xmlData, complete: onSuccess, error: function (xhr, ajaxOptions, thrownError) { alert("error: " + xhr.statusText); alert(thrownError); }, contentType: "text/xml; charset=\"utf-8\"" }); req.fromPage = fromPage; req.toPage = toPage; } function onSuccess(resp) { alert(this.fromPage); } 

我发现代码在两个地方使用fromPage非常令人困惑(对不起我的代码)。

this是指引用getData内部的var还是req对象的一部分? 或者完全是别的……

任何帮助赞赏。

根据jQuery.ajax文档:

所有回调中的this引用是在设置中传递给$ .ajax的context选项中的对象; 如果未指定context,则这是对Ajax设置本身的引用。

换句话说,由于您没有设置context选项, this将是作为参数传递给$.ajax的选项对象{...}

你发布的代码似乎错了:它从错误的对象读取fromPage 。 如果您在选项对象上设置fromPage ,它将起作用:

 req = $.ajax({ //other options here... fromPage: fromPage }); 

onSuccess()是从ajax请求的上下文中的complete处理程序调用的,该请求被分配给req对象,所以this就是上下文 – 即req对象,而fromPage实际上是req.fromPage

我相信this是指req.fromPage因为那是包含被调用函数的对象。