这是困扰我的事情。
我相信示例说得更好,所以假设我使用Javascript对象作为键值存储:
var sessionsManager = {
'initialized': true,
'members': {
'apple' : { 'time': '3498134911123' },
'orange': { 'time': '3031239123193' },
'foo' : { 'time': '3230102301929' },
'bar' : { 'time': '3230102301929' }
}
};
for(var session in sessionsManager.members) {
console.log(session.time); // #1: 'undefined'
console.log(sessionsManager.members[session].time); // #2: correct values
}
注意最后两行console.log
; session
不是对象,而是字符串。为什么呢?
编辑:有没有办法让方法#1产生正确的值?如果是这样,怎么样?
答案 0 :(得分:3)
因为对象的键是字符串。
当您使用for..in
时,您基本上会说“对象session
中的每个键sessionsManager.members
,请执行...”
这就是为什么sessionsManager.members[session].time
有效 - 你把钥匙放回对象中以获得价值。