2013-12-22 47 views
1

Javascript對象屬性我從未想過我會在那樣的問題絆倒,但嘿你知道什麼..與變量名

var prop = 'horses' 

console.log({ 
    prop: 1 
}); 

我怎麼能有這樣產生的對象,而不是用的屬性horsesprop,並可能在一行中完成?因爲我可以想出一個解決方案,但是我真正想要的是一個單線。

+1

真正的單行:'var prop =「horses」; console.log((function(o,p){o [p] = 1; return o;})({},prop));' –

回答

3

您可以使用括號表示法:

var obj = {}; 
obj[prop] = 1; 
console.log(obj); 

在JavaScript中,你可以參考屬性或者通過點符號和文字名稱(foo.bar),或括號符號與字符串名(foo["bar"]) 。在後一種情況下,字符串可以是任何表達式的結果,包括(在您的情況下)變量引用。

...但我真正想要的是一個班輪。

作爲對象初始值設定項的一部分,沒有辦法做到這一點,但是,您必須單獨執行該操作。如果你想要一個班輪,你需要做一個函數調用,如:

console.log(makeObj(prop, 1)); 

其中makeObj

function makeObj(propName, propValue) { 
    var obj = {}; 
    obj[propName] = propValue; 
    return obj; 
} 
1

嘗試使用JSON來創建對象:

console.log(JSON.parse("{\"" + prop + "\":\"1\"}"); 
+0

沒有必要爲此啓動JSON解析器。不過創意。 –