考虑我在我的Node.js应用程序中保存一个cookie,我正在使用快速框架的cookieParser中间件。
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
});
在阅读它们的同时,我遇到了两个选择:
request.cookies['String_cookieName']
request.cookies.name
两者都会返回string_value
,我为我的Cookie设置'String_cookieName'
),否则将返回undefined
。
但我的问题是哪一个在性能方面更快/更有效?
答案 0 :(得分: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"
据我所知,两者都没有明显快,所以如果你正在访问一个静态字段,你可以互换使用它们。
答案 1 :(得分:1)
表现实际上是相同的,see jsperf.
许多Cookie示例使用方括号并将属性作为字符串,因为通常使用点符号无法直接访问这些字符。
示例:
cookies['connect.sid'] // OK
cookies.connect.sid // error
答案 2 :(得分: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]);
}
其他只是使用普通符号,这样你就可以让代码更加易读,并且开发人员会更容易理解