Javascript jQuery表达式作为对象键

Javascript jQuery表达式作为对象键,javascript,jquery,object,Javascript,Jquery,Object,我需要弄清楚如何为对象创建动态键字符串。这个表达式使JavaScript抱怨 return {$(this).val(): true}; // returns an object e.g. {2: true} 我做错了什么?您必须创建对象,然后使用括号表示动态键 var obj = {}; var val = $(this).val(); obj[val] = true; return obj; 或者是完全不必要的一个班轮 return (function(o,e) {o[e.

我需要弄清楚如何为对象创建动态键字符串。这个表达式使JavaScript抱怨

return {$(this).val(): true};      // returns an object e.g. {2: true}

我做错了什么?

您必须创建对象,然后使用括号表示动态键

var obj = {};
var val = $(this).val();

obj[val] = true;

return obj;
或者是完全不必要的一个班轮

return (function(o,e) {o[e.value]=true; return o;})({}, this);

JavaScript对象文本语法
{x:y}
指定
x
将是(可能)无引号字符串,并且
y
将是任何值。不能将此语法用于动态键

改用这个:

var foo = {};
foo[$(this).val()] = true;
return foo;

无聊的。太慢了。阿德内奥说了些什么。@AndreasMüller:同上:一行怎么做?=)@silkfire:
var obj={};var val=$(this.val();obj[val]=真;返回obj:P(严肃的回答:否)@silkfire:不直接在初始值设定项中,不。如果您在需要单个表达式的地方绝对、肯定地必须这样做,那么您必须使用内联函数:
var obj=(函数(val){var o={};o[val]=true;返回o;}($(this.val())正常情况下,当然,你不想这样做。好了。拿到我的衬衫了。对不起,伙计们:)