簡體   English   中英

如何將變量用作對象中的鍵?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM