JavaScript对象声明语法 – 变量名作为属性

JavaScript给你很多方法来声明对象.当您掌握大部分数据时,最方便(在我看来)如下:

var person = {
    name: 'John',
    age: 23
}; // "object literal syntax"

这个语法的好奇之处在于它与以下相同:

var person = {
    'name': 'John',
    'age': 23
}; // "object literal syntax"

也就是说,您可以使用引号或省略属性名称.

当与设置单个属性的方式进行比较时,您有两个选项:

person.birthday = "January 12"; // "dot syntax"

要么

person['birthday'] = "January 12"; // "array syntax"

“点语法”仅在正确的操作数是实际属性名称时有效.如果要为属性名称使用变量,则必须使用“数组语法”,即:

var prop = "birthday";
person[prop] = "January 12";

现在,可以在“对象文字语法”中使用属性名称的变量吗?既然引用属性名称并不重要,那么在这里使用变量似乎并不是一个明显的方法.我正在寻找这样的东西:

var prop = "birthday";
var person = {
    name: 'John',
    age: 23,
    (prop): 'January 12'
};

这里我使用(prop)作为用于表示这是一个变量而不是字面字符串的虚拟语法.

谢谢.

最佳答案
ES6现在允许这样做:

var obj = {
  [prop]: 'value'
};

转载注明原文:JavaScript对象声明语法 – 变量名作为属性 - 代码日志