我想创建一个类型为{key:value}
的对象,其中键名是可变的。必须将此类对象提供给chrome.storage.<storageType>.set(keys, function(){...})
关于SO的相关问题很多有工作答案,但我无法找到合适的问题解释。它归结为在JSON对象上设置属性。我做了这个测试:
var desiredKey = "123",
desiredValue = "Value for key 123",
foo;
// 1-The basic: Using a literal
console.log({ "123": desiredValue });
// 2-The problem occurs when the key name is not a literal
console.log({ desiredKey: desiredValue });
// 3-The solution is to assign a key explicitely
foo = {};
foo[desiredKey] = desiredValue;
console.log(foo);
结果:
Object { 123: "Value for key 123" } <-- Literal
Object { desiredKey: "Value for key 123" } <-- Variable (wrong)
Object { 123: "Value for key 123" } <-- Assignment (ok)
问题:
desiredKey
的参考/地址?答案 0 :(得分:1)
方法4
从ECMAScript 2015开始,对象初始化程序语法还支持计算属性名称。这允许您将表达式放在括号
[]
中,它将作为属性名称计算。这与property accessor语法的括号表示形式对称,您可能已经习惯使用它来读取和设置属性。
var desiredKey = "123",
desiredValue = "Value for key 123",
foo = { [desiredKey]: desiredValue };
console.log(foo);