如何解决如何将插值的字符串/动态属性传递给Javascript哈希?
| 所以我有一个事件处理程序,基本上是这样的:function foo(category_key,category_value){
...
person.set({\"data-\"+category_key:category_value});
...
}
而且,如果我这样做:
foo(\“ age \”,12);
我希望set函数引用该哈希中的\“ data-age \”键...如何评估该键,以便引用\“ data-age \”而不是\“ category_key \”?在冒号之前抛出括号,并引发\“ invalid property id \”错误。
看来我可以制作一个新对象并传递如下内容:
function foo(category_key,category_value){
...
var ob = new Object();
ob[\"data-\"+category_key] = category_value;
person.set(ob);
...
}
但是我想知道是否还有更简洁的方法。
解决方法
但是我想知道是否还有更简洁的方法。
使其更简洁的唯一方法是使用
{}
(对象文字)而不是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));
...
}
, 在ECMAScript 5中,您可以使用Object.defineProperty
(MDC参考)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。