2014-03-05 201 views
-2

我发现它在下面的node.js程序中很有趣,当我尝试访问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

在JavaScript中,下面两个是等价的:

  • x.y
  • x['y']

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

+0

你是对的。所以如果一个变量'user'表示对象'用户的属性,那么就无法像访问类一样访问用户的属性。它只能像数组一样访问。 –