2015-04-06 40 views
1

對不起,新手問題,但我必須忽略一些東西。我如何設置obj.{this.name} = property so obj.sandwich = off。我的目標看起來是這樣的:javascript將項目按變量名稱推入對象

obj { sandwich: off, soup: off } 

http://jsfiddle.net/naaua4b5/

複選框列表:

<input type = "checkbox" name = "sandwich" /> 
<input type = "checkbox" name = "soup" /> 

JS代碼:

var obj = {} ; 

$('input[type=checkbox]:not(:checked)').map(function() 
{ 
    var item_name = this.name; 
    var value = 'off'; 
    obj.item_name = value; 
}).get(); 

console.log (obj); 

回答

5

使用括號標記:

var obj = {} ; 
     $('input[type=checkbox]:not(:checked)').map(function() 
       { 
        var item_name = this.name; 
        var value = 'off'; 
        obj[item_name] = value;// <-brackets! 
       }).get(); 
console.log (obj); 

點符號obj.key使用文字「鍵」訪問對象,雖然規範可以根據您要執行的操作進行限制。支架符號obj['key']給你一個更多的自由,你可以使用一個變量作爲關鍵(如你的情況),甚至在那裏扔瘋狂的人物,如obj["I'm-Acrazy_Key"]

+1

你能解釋爲什麼括號表示法應該用點符號來表示嗎? –

+0

兩個約定都可以工作,但是一個比另一個更受歡迎;通過解釋首選方法會增加這個答案的價值。 –

+0

爲什麼。 notation在我的循環中不起作用,但括號表示法呢? – Undermine2k