Javascript NodeJS:在对象中创建条件属性的方法比自调用函数更短?(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

有没有更简短的方式来表达以下内容?(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==="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 }
    : {},
}