我发现在下面的node.js程序中有趣的是,当我尝试访问JSON对象的属性时,访问它的唯一方法就是像数组一样访问,而不是类(对象名后跟句点和属性名称),我不知道为什么。
这是代码:
var users={
'tobi': 'foo',
'cobi': 'foo2',
'nobi': 'foo3'
};
var connect = require('connect');
var app = connect()
.use(connect.basicAuth(function(user, pass){
console.log(users.tobi); //foo
console.log(users['tobi']); //foo
console.log(user+'----'+pass); //tobi----foo
console.log(users); //{ tobi: 'foo', cobi: 'foo2', nobi: 'foo3' }
console.log(users.user); //undefined, why?
console.log(users[user]); //foo
return users.user== pass; //false of cause, but return users[user]==pass is true
}))
.use(function(req,res){
res.end('you are logged in \n');
});
app.listen(3000);
答案 0 :(得分:1)
在JavaScript中,以下两个是等效的:
x.y
x['y']
这意味着当您检查users.user
时,您正在检查users['user']
而不是users[user]
。由于您的对象没有名为'user'
的密钥,因此会返回undefined
。