【问题标题】:How to pass an interpolated string/dynamic property in to a Javascript hash?如何将插入的字符串/动态属性传递给 Javascript 哈希?
【发布时间】:2011-06-12 18:24:34
【问题描述】:

所以我有一个基本上是这样的事件处理程序:

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

如果我这样做了,那就太好了:

foo("年龄", 12);

我希望 set 函数引用该哈希中的“data-age”键...如何评估该键以便引用“data-age”而不是“类别键”?在冒号前的表达式周围加上括号会引发“invalid property id”错误。

看来我可以只创建一个新对象并传入如下内容:

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

但我想知道是否有更简洁的方法。

【问题讨论】:

    标签: javascript dynamic-data


    【解决方案1】:

    但我想知道是否有更简洁的方法。

    使其更简洁的唯一方法是使用{}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));
        ...
    }
    

    【讨论】:

      【解决方案2】:

      在 ECMAScript 5 中,您可以使用 Object.defineProperty (MDC reference)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-10
        • 1970-01-01
        • 2013-09-04
        • 2018-09-15
        • 1970-01-01
        • 2017-11-09
        • 2023-04-04
        • 2016-06-01
        相关资源
        最近更新 更多