这可能吗?现实世界的例子在这里:
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”
更新:我完全了解通过数组表示法访问变量。我提供的真实世界示例是对象的创建。我希望确保始终使用相同的密钥来获取和设置 - 而不是依赖于两个字符串常量保持同步。
答案 0 :(得分:1)
var myObject = {},
objectKey = 'Foo',
myObject[objectKey] = 'Baz';
console.log(myObject[objectKey]);
答案 1 :(得分:1)
正确的方法是:
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__
和Object.prototype.__defineSetter__
使用。
答案 2 :(得分:0)
像数组一样访问它:
myObject['Foo']
设置:
myObject['Foo'] = "Bar"
或作为变量:
var key = "Foo";
myObject[key] = "Bar"