2015-12-10 39 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。 –