92

私はそのような辞書オブジェクトを作成しようとしています

var obj = { varName : varValue };

私が期待しているのはvarName='foo'、 obj は if である必要があります{'foo', 'some value' }{varName, 'some value'}、変数の値は使用されていませんが、変数名がキーとして使用されています。可変値がキーとして使用されるようにするにはどうすればよいですか?

4

2 に答える 2

171

このようにしてみてください:

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

古い Javascript では、「動的」キーでオブジェクトを初期化できません。var obj = { varName : varValue };と同等var obj = { "varName" : varValue };です。これが Javascript の解釈方法です。

ただし、新しい ECMAScript は計算されたプロパティ名をサポートしており、次のことができます。

var obj = { [varName]: varValue };
于 2012-05-17T17:02:42.853 に答える
44

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() { ... }
于 2016-08-24T13:28:15.117 に答える