0

これは可能ですか?実際の例は次のとおりです。

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" として解釈するため、失敗します。

更新:配列表記を介して変数にアクセスすることを完全に認識しています。私が提供した実際の例は、オブジェクトの作成に関するものです。2 つの文字列定数が同期されていることに依存するのではなく、取得と設定に常に同じキーが使用されるようにしたいと考えています。

4

3 に答える 3

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};
});

詳細については、こちらをお読みください。Object.prototype.definePropertyは新しく、レガシー モードでは使用できませんが、ポリフィルはObject.prototype.__defineGetter__およびとして使用できますObject.prototype.__defineSetter__

于 2013-05-01T23:26:13.457 に答える
0

配列のようにアクセスします。

myObject['Foo']

設定するには:

myObject['Foo'] = "Bar"

または変数として:

var key = "Foo";
myObject[key] = "Bar"
于 2013-05-01T23:22:23.313 に答える