下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。

console.log(config);
console.log(config.col_id_3);

这就是这些行在控制台中打印的内容


当前回答

没有一个JSON stringify/parse对我有用。

formValues.myKey:               undefined
formValues.myKey with timeout:  content

我想要formValues的值。myKey是什么技巧是setTimeout 0,就像下面的例子。希望能有所帮助。

console.log('formValues.myKey: ',formValues.myKey);
setTimeout( () => { 
  console.log('formValues.myKey with timeout: ', formValues.myKey);
}, 0 );

其他回答

我遇到过这样的问题,发现解决方案与Underscore.js有关。我最初的日志记录毫无意义:

console.log(JSON.stringify(obj, null, 2));

> {
>   "code": "foo"
> }

console.log(obj.code);

> undefined

我还通过查看对象的键找到了解决方案:

console.log(JSON.stringify(Object.keys(obj)));

> ["_wrapped","_chain"]

这让我意识到obj实际上是一个围绕对象的Underscore.js包装器,最初的调试对我撒谎了。

如果你使用的是TYPESCRIPT和/或ANGULAR,它可能是这样的!

.then((res: any) => res.json())

设置响应类型为任何为我修复了这个问题,我无法访问响应上的属性,直到我设置res: any

属性“_body”在类型“Response”上不存在

在我的情况下,我将一个对象传递给一个承诺,在承诺中,我向对象添加了更多的键/值,当它完成时,承诺返回对象。

然而,我稍微多看了一下,承诺是在完全完成之前归还对象……因此,我的其余代码试图处理更新的对象,而数据还没有出现。但就像上面一样,在控制台中,我看到对象完全更新,但无法访问键-它们返回时未定义。直到我看到了这个:

console.log(obj) ;
console.log(obj.newKey1) ;

// returned in console
> Object { origKey1: "blah", origKey2: "blah blah"} [i]
    origKey1: "blah"
    origKey2: "blah blah"
    newKey1: "this info"
    newKey2: "that info"
    newKey3: " more info"
> *undefined*

[i]是一个小图标,当我悬停在它上面时,它说左边的对象值在记录时被快照,下面的值刚刚被评估。这时我突然想到,我的对象在承诺完全更新之前就已经被评估了。

我也面临同样的问题。

从服务器,我在json_encode中返回数据。 像这样

 echo json_encode($res);  

当我返回一个不带json_encode的简单PHP数组后,问题就解决了。

return $res;

我也有类似的问题,或者只是相关的问题。

对于我的情况,我正在访问一个对象的属性,但其中一个是未定义的。我发现问题是在服务器端代码的空白,而创建的关键,对象的val。

我的方法是这样的……

在从创建对象的服务器端代码中删除空白之后,我现在可以像下面这样访问属性了…

这可能不是主题问题的问题,但对我来说是这样,对其他人来说可能也是这样。希望能有所帮助。