2011-06-12 83 views
0

所以,我有一個事件處理程序,基本上是這樣的:如何將插入的字符串/動態屬性傳遞給Javascript哈希?

function foo(category_key, category_value){ 
    ... 
    person.set({"data-"+category_key:category_value}); 
    ... 
} 

而且洙如果我這樣做:

FOO( 「時代」,12);

我希望函數引用該數據中的「數據年齡」鍵...我如何評估的關鍵,以便「數據年齡」被稱爲而不是「category_key」?在冒號引起「無效屬性ID」錯誤之前,在表達式周圍放置括號。

看來我只能做一個新的對象,並在東西傳遞這樣的:

function foo(category_key, category_value){ 
    ... 
    var ob = new Object(); 
    ob["data-"+category_key] = category_value; 
    person.set(ob); 
    ... 
} 

但我想知道是否有這樣做的更簡潔的方式。

回答

4

但我想知道是否有更簡潔的方法來做到這一點。

只有這樣,才能使之更加簡潔是使用{}(一個object literal),而不是new Object() —和使用較短的變量名。

function foo(key, value) 
{ 
    ... 
    var ob = {}; 
    ob['data-'+key] = value; 
    person.set(ob); 
    ... 
} 

它不一定使代碼更短的整個身體,但你可以把這個邏輯到一個單獨的功能:

function bar(k, v) 
{ 
    var o = {}; 
    o[k] = v; 
    // or o['data'+k] = v; 
    return o; 
} 

function foo(key, value) 
{ 
    ... 
    person.set(bar('data-'+key, value)); 
    // or person.set(bar(key, value)); 
    ... 
} 
相關問題