具有可变属性的内联对象文字

时间:2015-12-10 14:15:36

标签: javascript

为什么Javascript语法不支持具有变量属性的内联对象文字?例如:

const f = function (arg) {
  console.log(arg);
}

f({}['some key'] = 1) // 1
f({ 'some key' : 1})  // [object Object] { some key: 1 }

除了这两个步骤之外还有其他选择吗?

var o = {}
o['some key'] = 1
f(o)

谢谢!

1 个答案:

答案 0 :(得分:4)

  

为什么Javascript语法不支持带有变量属性的内联对象文字?

您似乎在询问变量属性,但您的示例不使用变量。具体来说,这个例子可以正常工作。

#config/initializers/cable.rb
ActionCable.server.config.allowed_request_origins = %w( http://my-domain.com  )

但是,如果你确实想要在没有首先创建对象的情况下使用变量,ECMAScript 6现在允许这样做。

所以如果这是你的变量:

f({ 'some key' : 1})

现在,您可以在对象文字中的属性名称周围使用方括号,它将使用您提供的表达式的值:

var my_variable = 'some key';

var o = {[my_variable]: 1}; 对象将具有名为o的属性。这仅适用于当然支持此语法的实现。