我正在尝试创建一个这样的字典对象
var obj = { varName : varValue };
Run Code Online (Sandbox Code Playgroud)
我期待的是,如果varName='foo'obj应该是{'foo', 'some value' }我所看到{varName, 'some value'}的,变量的值没有被使用,而是变量名称作为键.如何使用变量值作为键?
Eng*_*eer 115
试试这样:
var obj = {};
obj[varName] = varValue;
Run Code Online (Sandbox Code Playgroud)
您无法使用旧Javascript中的"动态"键初始化对象.var obj = { varName : varValue };相当于var obj = { "varName" : varValue };.这是Javascript解释的方式.
但是新的ECMAScript支持计算属性名称,您可以这样做:
var obj = { [varName]: varValue };
Run Code Online (Sandbox Code Playgroud)
Leo*_*ler 24
从ECMAScript 2015开始,它在去年获得了更好的浏览器支持,您可以使用变量索引表示法:
var obj = { [varName] : varValue };
Run Code Online (Sandbox Code Playgroud)
这在语法上与...相同
var obj = {};
obj[varName] = varValue;
Run Code Online (Sandbox Code Playgroud)
您还可以使用表达式或符号作为属性键:
var contact = {
company: companyName,
};
var companiesWithContacts = {
[contact.company.toLowerCase()]: true
};
Run Code Online (Sandbox Code Playgroud)
var myList = {
[Symbol.iterator]: createIteratorForList
};
function createIteratorForList() { ... }
Run Code Online (Sandbox Code Playgroud)