为什么javascript不能通过键访问某些对象?

为什么javascript不能通过键访问某些对象?,javascript,Javascript,我有一个名为“userinfo”的JavaScript对象(它存储了一些用户的信息)。我想通过它的键来访问值。对于所有我可以成功获得的密钥,除了一个名为“auths”的密钥。然后我在控制台中通过console.log(userinfo)打印它,它也显示出来了。当我遍历它的对象时,键不再显示 然后在Chrome调试控制台中单击“存储为全局变量”选项。当我尝试访问时,它工作得很好 这是我的代码和调试的屏幕截图 console.log(userinfo); for (var key

我有一个名为“userinfo”的JavaScript对象(它存储了一些用户的信息)。我想通过它的键来访问值。对于所有我可以成功获得的密钥,除了一个名为“auths”的密钥。然后我在控制台中通过
console.log(userinfo)
打印它,它也显示出来了。当我遍历它的对象时,键不再显示

然后在Chrome调试控制台中单击“存储为全局变量”选项。当我尝试访问时,它工作得很好

这是我的代码和调试的屏幕截图

    console.log(userinfo);

    for (var key in userinfo){
        console.log(key + " = " + userinfo[key]);
    }
因为这里有一些我真正的个人信息,我制作了这张图片。(我打印的位置是“隐藏信息”)

我想知道为什么代码不能很好地工作,以及如何访问键“auths”中存储的信息

谢谢


控制台。日志
具有欺骗性。它正在打印一个“活动”对象。如果对象在记录后被更改,日志将更新(当您在日志中展开对象时,您将看到新属性)。当然,这不适用于通过串联在那里构建的临时字符串。因此,是的,我打赌10美元,对象在打印时确实没有
auths
属性。它是后来添加的

在操作中遵守此操作(查看浏览器控制台)

var myobj={foo:1}
console.log(myobj);

myobj.bar=2请,习惯于将代码添加为纯文本(您可以在编辑器中对其进行格式化)。在动态加载循环之前,您可以通过访问硬编码的代码轻松找到它,例如
userinfo['auths']
?我有根据的猜测是肯定的,你正在尝试在每个比萨饼送到你家之前吃掉它。对象的console.log在编写时不是快照。谢谢!确实,
auths
属性是在我使用GET from my API之后添加的,那么如何在Object
userinfo
中获取此属性呢?您可以等到它加载后再读取它。我理解为什么会出现此问题。如果我必须在对象中获取这个属性(尽管它是动态加载的),我应该怎么做@桂小方 等它设置好后再读。请参见注释中的链接答案。可能有用。我试过使用
console.dir
但仍能看到对象的更新版本,这正常吗?@ChinLeung:对我来说不正常:耸耸肩:想看看密码吗?@ChinLeung:真的。忘了我的建议吧。我错了:)