1

我有一个程式化形式的设置,如下所示:

(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 名称和属性名称相同。这对我来说更容易,但对你们来说可能不是:)

4

2 回答 2

2

修复人口部分后,示例代码按预期工作:http: //jsfiddle.net/4bL8T/

于 2012-06-07T08:14:41.857 回答
-1

在执行此代码之前:

(function () {
var db = {
    com: [
        324: {
            unmod: "xyz"
        }
    ]
};

var report = {
    method: function () {
        var x = db.com[324].unmod;
    }
};})();

通过console.log检查db.com对象的范围,如果对象未定义,您需要在使用前定义它。

于 2012-06-07T07:43:58.710 回答