我正在尝试创建一个像这样的字典对象
var obj = { varName : varValue };
我所期望的是if varName='foo',但是obj应该是{'foo', 'some value' }我所看到{varName, 'some value'}的是未使用变量的值而是变量名作为键的情况。如何使可变值用作键?
Answers:
尝试这样:
var obj = {};
obj[varName] = varValue;
在旧的Javascript中,您无法使用“动态”键初始化对象。var obj = { varName : varValue };等价于var obj = { "varName" : varValue };。这就是Javascript的解释方式。
但是,新的ECMAScript支持计算的属性名称,您可以执行以下操作:
var obj = { [varName]: varValue };
{}语法在构造)构造对象时,您会知道这些键是什么。另一种选择是要求每个确实希望使用固定键的人都将引号引起来,这将使更多时间的更多人从事更多工作。
从ECMAScript 2015开始,它在过去的几年中获得了更好的浏览器支持,您可以使用变量索引符号:
var obj = { [varName] : varValue };
在语法上与
var obj = {};
obj[varName] = varValue;
您还可以将表达式或符号用作属性键:
var contact = {
company: companyName,
};
var companiesWithContacts = {
[contact.company.toLowerCase()]: true
};
var myList = {
[Symbol.iterator]: createIteratorForList
};
function createIteratorForList() { ... }