使用变量创建对象文字,如何获取它的值

use variable to create an Object literal, how to get just its value

你能解释一下为什么这个对象同时获得 variable/value 而不仅仅是它的值吗?

var a = 'foo', b = 'bar', obj = {a, b}; 

预计

obj = {'foo' : 'bar'}

结果

obj = {a: "foo", b: "bar"}

谢谢

在 ES5 JavaScript 中,您的代码会出现语法错误。

ES2015 JavaScript,

var obj = {a, b}

对于

来说是shorthand
var obj = { a: a, b: b }

如果你想要 {foo: "bar"} 你可以(在 ES2015 中)使用

var obj = { [a]: b }

为了与旧环境兼容,您必须使用两个语句:

var obj = {};
obj[a] = b;

原因是,您将它们添加为两个变量、成员而不是键值对。它是 expected 结果(ES6 / ES2015)或 Syntax Error(ES5,因为应该有一个键:值对,用逗号分隔)。您正在寻找的是:

obj = {};
abj[a] = b;

有趣的是,给予:

obj = {a: b};

将把a作为新的key,而不是用a的值代替。

尝试使用以下代码:

obj[a] = b;

这会给你:

obj = { "foo" : "bar" }

您原来的做法只是 shorthand 并将变量传递给对象,而不仅仅是它们的值