Javascript:正确的闭包语法和格式
我对JS/jQuery的使用只有一定的经验。我试图解析从IIS检索到的XML对象,以下是一些伪代码,大致描述了我的问题:Javascript:正确的闭包语法和格式,javascript,jquery,Javascript,Jquery,我对JS/jQuery的使用只有一定的经验。我试图解析从IIS检索到的XML对象,以下是一些伪代码,大致描述了我的问题: //accepts an XML Object function dataFromAjax(object) { var x; // this is an int used to ID the object var y; var z; var arr = []; var __data
//accepts an XML Object
function dataFromAjax(object) {
var x; // this is an int used to ID the object
var y;
var z;
var arr = [];
var __data = this;
var xmlObject = object;
function readDataFromXMLObject() {
__data.x = $(xmlObject).find("X").text();
__data.y = $(xmlObject).find("Y").text();
__data.z = $(xmlObject).find("Z").text();
testArr = $(xmlObject).find("TestArrInfo").text().split(",");
if(testArr[0] != null)
__data.arr.push(testArr[0]);
// ...
}
function storeData() {
sessionStorage.setItem(__data.x, JSON.stringify(__data));
}
readDataFromXMLObject();
storeData();
}
在控制台中,在尝试解析arr[]时,它给了我以下错误:
未捕获类型错误:无法读取未定义的属性“push”
当我尝试手动键入类似于sessionStorage.getItem(123)
(带引号和不带引号)的内容时,它也会返回null
为了测试这些值,我尝试了
console.log(xmlObject)
和console.log(\uu data.x)
进行调试,这两种方法都很好,分别给了我XML对象和x值。不确定数组为什么不工作或整个对象为什么不保存。如果有任何提示,我将不胜感激。在此范围内,您可以直接访问arr
:
arr.push(testArr[0])
您的此
上下文可能指向窗口
对象<代码>窗口。arr未定义
阅读JS:中的
上下文,谢谢!我假设它们必须通过_数据访问,因为console.log(x)未定义,但console.log(_data.x)返回了该值。我仍然需要弄清楚上下文是如何处理闭包的。