2014-03-05 356 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'表示對象'用戶的屬性,那麼就無法像訪問類一樣訪問用戶的屬性。它只能像數組一樣訪問。 –