【发布时间】:2012-05-17 17:00:56
【问题描述】:
我正在尝试像这样创建一个字典对象
var obj = { varName : varValue };
我期待的是如果varName='foo',obj 应该是{'foo', 'some value' } 但是我看到的是{varName, 'some value'} 变量的值没有被使用,而是变量名作为键。如何使变量值用作键?
【问题讨论】:
标签: javascript
我正在尝试像这样创建一个字典对象
var obj = { varName : varValue };
我期待的是如果varName='foo',obj 应该是{'foo', 'some value' } 但是我看到的是{varName, 'some value'} 变量的值没有被使用,而是变量名作为键。如何使变量值用作键?
【问题讨论】:
标签: javascript
试试这样:
var obj = {};
obj[varName] = varValue;
您不能在旧 Javascript 中使用“动态”键初始化对象。 var obj = { varName : varValue }; 等价于 var obj = { "varName" : varValue };。这就是 Javascript 的解释方式。
然而新的 ECMAScript 支持computed property names,你可以这样做:
var obj = { [varName]: varValue };
【讨论】:
{} 语法正在做的事情)构造对象时,您知道这些键是什么。另一种方法是要求确实想要固定键的每个人都在它们周围加上引号,这对更多的人来说会更有效。
从去年获得更好的浏览器支持的 ECMAScript 2015 开始,您可以使用变量索引表示法:
const obj = { [varName] : varValue };
这在语法上与
相同var obj = {};
obj[varName] = varValue;
您也可以使用表达式或符号作为属性键:
const contact = {
company: companyName,
};
const companiesWithContacts = {
[contact.company.toLowerCase()]: true
};
const myList = {
[Symbol.iterator]: createIteratorForList
};
function createIteratorForList() { ... }
【讨论】: