node.js访问json对象问题

时间:2014-03-05 21:37:47

标签: javascript json

我发现在下面的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);

1 个答案:

答案 0 :(得分:1)

在JavaScript中,以下两个是等效的:

  • x.y
  • x['y']

这意味着当您检查users.user时,您正在检查users['user']而不是users[user]。由于您的对象没有名为'user'的密钥,因此会返回undefined