有没有办法在JavaScript对象文字中使用variables键?

我有这样的代码。

var key = "anything"; var object = { key: "key attribute" }; 

我想知道是否有办法用“任何东西”replace这个key

喜欢

 var object = { "anything": "key attribute" }; 

是。 您可以使用:

 var key = "anything"; var json = { }; json[key] = "key attribute"; 

或者,如果您在编写程序时手头有值,就直接使用第二种方法。

在ES6中,使用计算的属性名称

 const key = "anything"; const object = { [key]: "key attribute" // ^^^^^ COMPUTED PROPERTY NAME }; 

注意key的方括号。 实际上你可以在方括号中指定任何expression式,而不仅仅是一个variables。

这应该做的伎俩:

 var key = "anything"; var json = {}; json[key] = "key attribute"; 

解:

 var key = "anything"; var json = {}; json[key] = "key attribute"; 

闭合效果很好。

 function keyValue(key){ return function(value){ var object = {}; object[key] = value; return object; } } var key = keyValue(key); key(value); 

最近需要一个解决scheme如何设置cookie传递dynamicjson键值。 使用https://github.com/js-cookie/js-cookie#json ,可以轻松完成。 希望将每个select的用户选项值存储在cookie中,所以在选项卡或浏览器closures的情况下不会丢失。

 var json = { option_values : {} }; $('option:selected').each(function(index, el) { var option = $(this); var optionText = option.text(); var key = 'option_' + index; json.option_values[key] = optionText; Cookies.set('option_values', json, { expires: 7 } ); }); 

然后,您可以使用每个页面加载检索每个Cookie密钥值

 Cookies.getJSON('option_values'); 

那么,没有一个“直接”的方式来做到这一点…

但是这应该做到这一点:

 json[key] = json.key; json.key = undefined; 

它有点棘手,但嘿,它的作品!