下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
当前回答
我刚刚从MongoDB使用Mongoose加载文档时遇到了同样的问题。
原来,我使用属性find()只返回一个对象,所以我把find()改为findOne(),一切都为我工作。
解决方案(如果您正在使用Mongoose):确保只返回一个对象,这样您就可以解析它的对象。Id或者它将被视为数组所以你需要像访问对象[0]。Id那样访问它。
其他回答
2018年,Mozilla在Mozilla文档中警告我们!
我引用“日志对象”:
不要使用console.log(obj); 使用console.log (JSON.parse (JSON.stringify (obj)));。 通过这种方式,您可以确定当前正在看到obj的值 你记录下来。
我也有同样的问题。我的解决方案是使用字符串化输出作为解析JSON的输入。这对我很管用。希望对你有用
var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
这可能会帮助某人,因为我有一个类似的问题,其中JSON.parse()返回一个对象,我可以在console.log()上打印,但我无法访问特定的字段,上述解决方案都不适合我。比如使用JSON.parse()和JSON.stringify()的组合。
var jsonObj = JSON.parse(JSON.stringify(responseText))
// where responseText is a JSON String returned by the server.
console.log(jsonObj) ///Was printing the object correctly
console.log(jsonObj.Body) /// Was printing Undefined
我最终通过使用ExtJs Ext.decode()提供的不同解析器来解决这个问题;
var jsonObj = Ext.decode(responseText)
console.log(jsonObj.Body) //Worked...
我也遇到了同样的问题,但上面的解决方案对我来说都不奏效,之后我感觉就像是在猜测。但是,在setTimeout函数中包装创建对象的代码对我来说是有用的。
setTimeout(function() {
var myObj = xyz; //some code for creation of complex object like above
console.log(myObj); // this works
console.log(myObj.propertyName); // this works too
});
您试图访问的属性可能还不存在。Console.log可以工作,因为它在一小段延迟后执行,但其余代码并非如此。试试这个:
var a = config.col_id_3; //undefined
setTimeout(function()
{
var a = config.col_id_3; //voila!
}, 100);