使用变量来创建一个Object文字,如何获得它的值

时间:2016-02-03 15:52:23

标签: javascript object-literal

你能解释为什么这个Object得到变量/值而不仅仅是它的值吗?

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

预期

obj = {'foo' : 'bar'}

结果

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

感谢

3 个答案:

答案 0 :(得分:3)

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

在ES2015 JavaScript中,

var obj = {a, b}

的简写
var obj = { a: a, b: b }

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

var obj = { [a]: b }

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

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

答案 1 :(得分:0)

原因是,您将它们添加为两个变量,成员而不是键值对。它是预期结果(ES6 / ES2015)或语法错误(ES5,因为应该有一个键:以逗号分隔的值对)。你在寻找的是:

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

值得注意的是,给予:

obj = {a: b};

a作为新密钥,而不是替换为a的值。

答案 2 :(得分:0)

尝试使用以下代码:

obj[a] = b;

这会给你:

obj = {" foo" :" bar" }

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