下面,您可以看到这两个日志的输出。第一个清楚地显示了具有我试图访问的属性的完整对象,但在下一行代码中,我无法访问它config.col_id_3(请参阅屏幕截图中的“未定义”?)。谁能解释一下?我可以访问除此之外的所有其他属性field_id_4。
console.log(config);
console.log(config.col_id_3);
这是这些行在控制台中打印的内容

下面,您可以看到这两个日志的输出。第一个清楚地显示了具有我试图访问的属性的完整对象,但在下一行代码中,我无法访问它config.col_id_3(请参阅屏幕截图中的“未定义”?)。谁能解释一下?我可以访问除此之外的所有其他属性field_id_4。
console.log(config);
console.log(config.col_id_3);
这是这些行在控制台中打印的内容

的输出具有console.log(anObject)误导性;显示对象的状态仅在您通过单击 展开控制台中显示的对象树时解析>。当你得到对象时,它不是对象的状态console.log。
相反,尝试console.log(Object.keys(config)),甚至console.log(JSON.stringify(config)),您将看到键,或调用时对象的状态console.log。
您(通常)会在您console.log致电后发现正在添加密钥。
我刚刚遇到了使用Mongoose从 MongoDB 加载的文档的问题。
在console.log()整个对象上运行时,所有文档字段(存储在数据库中)都会显示出来。然而undefined,当其他属性访问器(包括_id)工作正常时,某些单独的属性访问器会返回。
原来,属性访问器仅适用于我的mongoose.Schema(...)定义中指定的那些字段,而console.log()并JSON.stringify()返回存储在数据库中的所有字段。
解决方案(如果您使用的是 Mongoose):确保您的所有 db 字段都在mongoose.Schema(...).
检查对象内部是否有对象数组。我对 JSON 有类似的问题:
    "terms": {
        "category": [
            {
                "ID": 4,
                "name": "Cirugia",
                "slug": "cirugia",
                "description": "",
                "taxonomy": "category",
                "parent": null,
                "count": 68,
                "link": "http://distritocuatro.mx/enarm/category/cirugia/"
            }
        ]
    }
我试图从“类别”访问“名称”键,但出现未定义错误,因为我使用的是:
var_name = obj_array.terms.category.name
然后我意识到它有方括号,这意味着它在类别键内有一组对象,因为它可以有多个类别对象。因此,为了获得“名称”键,我使用了这个:
var_name = obj_array.terms.category[0].name
这就是诀窍。
也许这个答案为时已晚,但我希望有同样问题的人会像我在找到解决方案之前一样找到这个:)
我遇到过同样的问题。我的解决方案是使用字符串化的输出作为解析 JSON 的输入。这对我有用。希望对你有用
var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
您尝试访问的属性可能还不存在。Console.log 之所以有效,是因为它会在一小段延迟后执行,但对于您的其余代码,情况并非如此。试试这个:
var a = config.col_id_3;    //undefined
setTimeout(function()
{
    var a = config.col_id_3;    //voila!
}, 100);