2011-06-12 24 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)); 
    ... 
} 
相关问题