是否有可能直接在对象声明本身内命名对象属性,之后又做了吗?
例如,这有效:
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"
};
有办法做到这一点吗?
答案 0 :(得分:2)
在ES2015中,否则在ES5中,没有办法
var name = "foo";
var obj = {
[name]: "bar"
};
console.log(obj)

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