这是一直困扰我的东西。为什么JS forin循环将(循环)对象存储为(字符串化)键,而不是对象?
我相信例子讲好,让我们说我使用的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产生正确的值吗?如果是这样,怎么样?
这归结为“因为这是如何写的语言”。 – zzzzBov
顺便说一句:记得在你做任何事之前检查sessionsManager.members.hasOwnProperty(session)。 –