2013-12-14 36 views
0

我有這樣的jQuery:如何爲密鑰名稱使用變量?

$.post(document.URL, {'blanks':word}); 
$.post(document.URL, {'blanks':{ word :{'time':T}}}); 

這是結果,當我登錄它在終端:

{ blanks: 'plotted' } 
{ blanks: { word: { time: '1386984059685' } } } 

爲什麼變量word不在第二jQuery的語句更改?我認爲這與單引號被添加到密鑰名稱有關,但我無法找到解決辦法。

我解決我的問題與

$.post(document.URL, {'blanks':{'word':word, 'time':T}}); 

這就造成了

{ blanks: { word: 'plotted', time: '1386984409890' } } 

但我很好奇,爲什麼當它是關鍵變量並沒有改變,如果有一個如何做到這一點?

+1

鍵是不能忽視的變量看http://stackoverflow.com/questions/6071471/javascript-object-variable-key – megawac

+0

好足夠公平 – Squirrl

回答

1

如果事先定義你的數據,你可以這樣做:

var someVar = 'foo'; 
var data = {}; 

data[someVar] = 'My key is "foo"'; 

console.log(data.foo); 
console.log(data[someVar]); 
console.log(data['foo']); 

所有這些都將記錄My key is "foo"

當您創建這樣{prop: 'value'}屬性名稱不能是一個對象一個變量 - 你輸入的是你得到的。引號是可選的,除非您使用否則會引發錯誤的字符。使用點符號訪問屬性也是如此:myObj.propName.anotherPropName

括號表示法更靈活,因爲您可以訪問其他無效的屬性名稱,也可以使用變量來設置和訪問屬性。

var myObj = { 
    '@##%$#%%^&%' : 'some value' 
}; 
console.log(myObj['@##%$#%%^&%']); //logs "some value"