有没有办法在对象创建时按字符串命名属性?

时间:2016-10-05 14:13:11

标签: javascript

是否有可能直接在对象声明本身内命名对象属性,之后又做了吗?

例如,这有效:

var name  = "foo";
var obj   = {};
obj[name] = "bar; // obj.foo === "bar"

但是有没有办法在对象本身内部做到这一点,比如:

var name  = "foo";
var obj   = {
    name: "bar" // obj.name === "bar"
};

我知道可以使用字符串作为属性名称,因此我认为这样的事情应该作为解决方法,但它没有:

var obj   = {
    "" + name: "bar"
};

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

在ES2015中,否则在ES5中,没有办法



var name = "foo";
var obj = {
  [name]: "bar"
};

console.log(obj)




  

从ECMAScript 2015开始,也是对象初始化器语法   支持计算属性名称。这允许你放一个表达式   在括号[]中,将计算为属性名称。这是   对称的属性访问器语法的括号表示法,   您可能已经习惯于阅读和设置属性。轮到你了   也可以在对象文字中使用相同的语法。

Computed properties in object initializers on MDN