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

Gor*_*uan 70 javascript

我有这样的代码.

var key = "anything";   
var object = {   
    key: "key attribute"  
};
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法key用"任何东西" 代替它.

喜欢

var object = {  
    "anything": "key attribute"     
};
Run Code Online (Sandbox Code Playgroud)

小智 152

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

const key = "anything";   

const object = {   
    [key]: "key attribute"
//  ^^^^^  COMPUTED PROPERTY NAME
};
Run Code Online (Sandbox Code Playgroud)

注意方括号key.您实际上可以在方括号中指定任何表达式,而不仅仅是变量.

  • 这应该是新接受的答案 (11认同)
  • 也适用于铬.最简单和最好的答案(y) (2认同)
  • 这对于 ES6 来说没问题,但是对于旧版本呢(IE11 会在上面的代码上崩溃) (2认同)

tva*_*son 103

是.您可以使用:

var key = "anything";
var json = { };
json[key] = "key attribute";
Run Code Online (Sandbox Code Playgroud)

或者,如果您在编写程序时有手头的值,则只需使用第二种方法.


D. *_*ans 9

这应该做的伎俩:

var key = "anything";

var json = {};

json[key] = "key attribute";
Run Code Online (Sandbox Code Playgroud)


Jor*_*oso 6

在现代Javascript(ECMAScript 6)上,您可以使用方括号将变量括起来:

var key = "anything";

var json = {
    [key]: "key attribute"
};
Run Code Online (Sandbox Code Playgroud)