2013-01-24 50 views
0

考慮我在使用express框架的cookieParser中間件的Node.js應用程序中保存cookie。Node.js + Express中的request.cookies ['name']和request.cookies.name之間的區別

app.use(express.cookieParser()); 

app.get('/setCookie', function(req, res){ 
    res.cookie('String_cookieName', 'String_value', { expires: new Date(Date.now() + 18000000), httpOnly: true }); // +5 Hours expiry 
}); 

而且在閱讀他們回來,我遇到兩個選擇來了:

  1. request.cookies['String_cookieName']
  2. request.cookies.name

雙方將回到我的string_value,我已經爲我的餅乾('String_cookieName')否則如果過期undefined將被退回。

但我的問題是哪一個在性能方面更快/更高效?

回答

1

的性能實際上是相同的,see jsperf.

一很多Cookie示例使用方括號作爲字符串的屬性,因爲通常使用點符號不能直接訪問字符。

例子:

cookies['connect.sid'] // OK 
cookies.connect.sid  // error 
3

Request.cookies只是一個對象。您可以使用您編寫的任一方法訪問對象的任何成員。當您已經知道您正在訪問的字段的名稱時,通常會使用object.xxx,而當字段名稱爲動態時,通常會使用括號;例如:

var variable = "foo"; 
object[variable] = "bar"; 

variable = "test"; 
object[variable] = "qwax" 

console.log(object.foo); //"bar" 
console.log(object.test); //"qwax" 

據我所知,沒有比其他顯著快,所以如果你訪問一個靜態字段,可以交替使用它們。

+0

謝謝您的很好解釋的答案 –

0

沒有區別。這只是JavaScript有兩種訪問對象字段的方式。

在我看來,最好使用request.cookies.name然後request.cookies ['name']這樣的簡單表示法,除非你循環對象的許多字段併爲它們中的每一個應用相同的動作。

//lets say you have object like one below: var someObj = {}; 
someObj.x1 = 1; 
someObj.x2 = 2; 
someObj.x3 = 3; 
someObj.x4 = 4; 
someObj.x5 = 5; 
... 
someObj.x20 = 20; 

//And if you want to output properties 3 to 12 
//you can do like that 
for(var i = 3; i<12; ++i) 
{ 
    console.log(someObj['x' + i]); 
} 

Otherwie只是使用普通的記號,這樣你會繼續代碼更readabale,它會更容易理解同胞開發商

相關問題