Javascript NodeJS:在对象中创建条件属性的方法比自调用函数更短?(ES5或ES6)
有没有更简短的方式来表达以下内容?(ES5或ES6)Javascript NodeJS:在对象中创建条件属性的方法比自调用函数更短?(ES5或ES6),javascript,node.js,javascript-objects,self-invoking-function,Javascript,Node.js,Javascript Objects,Self Invoking Function,有没有更简短的方式来表达以下内容?(ES5或ES6) res.cookie('abc','xyz'{ 最大年龄:90万, httpOnly:true, 安全:process.env.NODE_env==“生产” });您可以使用三元组,因为三元组是表达式 res.cookie('abc', 'xyz', { maxAge: 9 * 100 * 1000, httpOnly:true, secure: process.env.NODE_ENV==="pr
res.cookie('abc','xyz'{
最大年龄:90万,
httpOnly:true,
安全:process.env.NODE_env==“生产”
});代码>您可以使用三元组,因为三元组是表达式
res.cookie('abc', 'xyz', {
maxAge: 9 * 100 * 1000,
httpOnly:true,
secure: process.env.NODE_ENV==="production" ? true : undefined
});
ES6提供了Object.assign
方法,您可以这样使用:
var obj = Object.assign(
{
maxAge: 900000,
httpOnly: true,
},
process.env.NODE_ENV === "production"
? { secure: true }
: {}
)
这将确保在环境不是生产环境的情况下,密钥secure
甚至不存在于最终对象中。如果您同意密钥存在,但值为false
,则:
var obj = {
maxAge: 900000,
httpOnly: true,
secure: process.env.NODE_ENV === "production",
}
就够了
在甚至更新版本的ECMAScript中,您可以使用…
操作符访问对象分解。因此,您可以将第一个代码段转换为更简洁的版本:
var obj = {
maxAge: 900000,
httpOnly: true,
...process.env.NODE_ENV === "production"
? { secure: true }
: {},
}
主要基于意见许多好的问题都会根据专家经验产生一定程度的意见,但对这个问题的回答往往几乎完全基于意见,而不是事实、参考资料或具体的专业知识。所以,这个应该很接近!我是说。。。“shorter”不是一个生成意见的请求。这不是一个用来定义好代码的标准,这是不同的。在原始代码中不存在的地方,“安全”将是错误的。@lilezek你是对的,但我认为Secure:false
会起作用。@Emilio可以告诉我是的,起初我写的问题是@lilezek read it。通过使用自调用函数,我试图不在对象中使用“secure”属性。但我想得太多了,因为“安全”属性默认为false,所以Zohaib Ijaz的答案是正确的。谢谢所有帮忙的人!是的,那就是我要找的!非常感谢。
var obj = {
maxAge: 900000,
httpOnly: true,
...process.env.NODE_ENV === "production"
? { secure: true }
: {},
}