2015-12-10 37 views
0

为什么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) 

谢谢!

+0

var o = {'some key':1}'有问题吗?如果您的意思是变量中包含的属性名称,它是[ES6](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer) – Hacketo

+0

正确,抱歉,没有反映在示例中。 –

回答

1

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

您似乎在问变量属性,但您的示例不使用变量。具体来说,这个例子将工作得很好。但是,如果您确实想在不首先创建对象的情况下使用变量,ECMAScript 6现在允许这样做。

因此,如果这是你的变量:

var my_variable = 'some key'; 

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

var o = {[my_variable]: 1}; 

o对象将有一个名为"some key"的属性。这只适用于当然支持这种语法的实现。

+1

谢谢!并感谢ES6。 –