[英]How can I dynamically reference a variable key name in a Javascript object?
[英]How can I use a variable as a key in an object?
這可能嗎? 現實世界的例子在這里:
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”
更新:我完全了解通過數組表示法訪問變量。 我提供的真實世界示例是用於創建對象。 我希望確保始終使用相同的密鑰來獲取和設置 - 而不是依賴於兩個字符串常量保持同步。
var myObject = {},
objectKey = 'Foo',
myObject[objectKey] = 'Baz';
console.log(myObject[objectKey]);
正確的方法是:
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};
});
請閱讀此處了解更多相關信息。 Object.prototype.defineProperty
是新的,在遺留模式下不可用,但Object.prototype.__defineGetter__
可用作Object.prototype.__defineGetter__
和Object.prototype.__defineSetter__
。
像數組一樣訪問它:
myObject['Foo']
設置:
myObject['Foo'] = "Bar"
或者作為變量:
var key = "Foo";
myObject[key] = "Bar"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.