【问题标题】:Passing a variable as a property name [duplicate]将变量作为属性名称传递[重复]
【发布时间】:2016-11-12 15:35:47
【问题描述】:

我需要在以下函数中传递一个变量作为属性名:

var value;
chrome.storage.local.set({name: value});

我已经使用 ES6 - 对象文字扩展 - 计算属性实现了这一点:

var value;
var name;
chrome.storage.local.set({[name]: value});

ES6 开始在版本 42(仅限严格模式)和版本 49 中在严格模式之外实现。根据Browser Market Share 的说法,大约 5% 的人仍在使用 Chrome 45,所以我认为使用 ES6 不是一个好主意。

此外,我正在使用 WebExtensions 将其移植到 Firefox。

有没有可以被更多浏览器版本处理的解决方案?

【问题讨论】:

  • 您可以使用括号表示法。
  • 这不是我在示例中使用的吗?
  • var obj = {}; obj[name] = value;
  • 你能告诉我我应该在chrome.storage.local.set({[name]: value});这行中改变什么吗?我完全按照你的建议做了。
  • @JuliusS。等等,这不是 Chrome 扩展的代码吗?那么你为什么要关心它是否适用于其他浏览器呢?

标签: javascript google-chrome google-chrome-extension ecmascript-6


【解决方案1】:

您可以使用括号表示法来设置对象的属性名称。见chrome.storage.local.set using a variable key namechrome.storage

var value = "123";
var name = "abc";
var obj = {};
obj[name] = value;
chrome.storage.local.set(obj);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2014-08-27
    相关资源
    最近更新 更多