我有一个以程式化形式设置的设置:
(function () {
var db = {
com: { EDIT: Changed this from [...] to {...}
324: {
unmod: "xyz"
}
}
};
var report = {
mymethod: function () {
var x = db.com[324].unmod;
}
};
})();
我收到的错误消息是db.com is undefined
。在我看来,report.mymethod
无法“看到”db.com
。那是对的吗?
一个因素可能是db.com
是通过循环遍历AJAX数据创建的:
for (i = 0; i < length1; i++) {
cat = o.cat[i];
length2 = cat.com.length;
// Loop through comments
for (j = 0; j < length2; j++) {
com = cat.com[j];
// Create db object
this[com.cnum] = {
unmod: com.unmod
};
}
}
这个问题是关闭的吗?
AJAX数据的相关部分就是这样
"cat":[
{ ...
"com": [ {"cnum":"324", "unmod":"xyz"},...]
}, ...],
抱歉AJAX名称和属性名称相同。它让我更容易,但也许不适合你们:)
答案 0 :(得分:2)
示例代码在修复填充部分后按预期工作:http://jsfiddle.net/4bL8T/
答案 1 :(得分:-1)
在执行此代码之前:
(function () {
var db = {
com: [
324: {
unmod: "xyz"
}
]
};
var report = {
method: function () {
var x = db.com[324].unmod;
}
};})();
通过console.log检查db.com
对象的范围,如果对象未定义,则需要在使用之前定义它。