Подтвердить что ты не робот

Ключ для javascript-словаря не сохраняется как значение, а как имя переменной

Я пытаюсь создать объект словаря таким образом

var obj = { varName : varValue };

То, что я ожидаю, это если varName='foo', obj должен быть {'foo', 'some value' }, однако я вижу {varName, 'some value'} значение переменной не используется, а имя переменной в качестве ключа. Как сделать так, чтобы переменное значение использовалось как ключ?

4b9b3361

Ответ 1

Попробуйте вот так:

var obj = {};
obj[varName] = varValue;

Вы не можете инициализировать объекты с помощью "динамических" ключей. var obj = { varName : varValue }; эквивалентно var obj = { "varName" : varValue };. Вот как интерпретируется Javascript.

Ответ 2

Начиная с 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() { ... }