“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
因为那是包含被调用函数的对象。