javascript - 如何使用变量作为对象中的键?

标签 javascript

这可能吗?现实世界的例子在这里:

var userKey = "userIdKey";

chrome.storage.sync.set({ userKey: "Hello World" }, function () {
    chrome.storage.sync.get(userKey, function (data) {
        console.log("In sync:", data);
    });

    console.log("Success");
});

此示例当前失败,因为 getter 查找“userIdKey”,而 setter 将变量字面解释为“userKey”

更新:我完全知道通过数组表示法访问变量。我提供的真实世界示例是用于对象的创建。我希望确保始终使用相同的 key 来获取和设置——而不是依赖于两个字符串常量保持同步。

最佳答案

正确的方法是:

    var key = "something";
    Object.defineProperty(d, key, {
        get: function() {return this.getFullYear() },
        set: function(y) { this.setFullYear(y) }
    });

或者根据您的情况:

chrome.storage.sync.defineProperty(this, userKey, {
    get: function() {return this[userKey];},
    set: function(value) {this[userKey] = value};
});

阅读HERE了解更多相关信息。 Object.prototype.defineProperty是新的并且在旧模式下不可用,但可以使用Object.prototype.__defineGetter__来使用polyfill。和Object.prototype.__defineSetter__ .

关于javascript - 如何使用变量作为对象中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327978/

相关文章:

javascript - 如何在不删除其他类的情况下添加类?

javascript - 记住柯里化(Currying)函数

javascript - 如何让打字机循环?

javascript - 在非常简单的 JavaScript 函数中嵌入变量

javascript - 在 Quill js 编辑器中模拟文档页面

javascript - 在Javascript中将字符串转换为日期时间格式

JavaScript 可选链动态属性

javascript - CSS -calc() 或 JQuery calc() 不适用于顶部

javascript - 如何返回从输入对象推断键的对象?

javascript - 为什么页面只用 React Router 加载?