这可能吗?现实世界的例子在这里:
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/