在chrome.storage.local.set中使用变量键

Sya*_*r S 4 javascript google-chrome-extension google-chrome-storage

我正在创建一个chrome扩展.我不知道如何使用变量作为chrome.storage.local.set()功能的关键.我试过了

var key = 'myKey';
chrome.storage.local.get(key, function(val) { 
    chrome.storage.local.set({key:val[key]+param1}); //appending  param1
    alert(val[key]);
}
Run Code Online (Sandbox Code Playgroud)

在这里,我试图获取值val[key]并附加一个字符串,param1并使用相同的密钥将其放回存储.但我无法这样做.警报框始终显示未定义.


但是当我尝试没有变量时key,它工作正常.

chrome.storage.local.get('myKey', function(val) { 
    chrome.storage.local.set({myKey:val['myKey']+param1}); //appending  param1
    alert(val['myKey']);
}
Run Code Online (Sandbox Code Playgroud)

问题是我使用chrome.storage.local.set的不仅是字符串而且还有对象的参数.

Rob*_*b W 5

在JavaScript中,使用非静态变量名的唯一方法是将值指定为属性,而不是使用对象文字.

var key = 'myKey';
var param1 = 'whatever';
chrome.storage.local.get(key, function(val) {
    // Create property if does not exist (yet)
    if (typeof val[key] != 'string') val[key] = '';
    // Append value of param1
    val[key] += param1;
    // Save data
    chrome.storage.local.set(val);
    alert(val[key]);
});
Run Code Online (Sandbox Code Playgroud)

注意:您可能希望验证是否set成功.这可以通过使用回调来完成.例如:

    chrome.storage.local.set(val, function() {
        if (chrome.extension.lastError) {
            alert('An error occurred: ' + chrome.extension.lastError.message);
        }
    });
Run Code Online (Sandbox Code Playgroud)


Sya*_*r S 5

我已经解决了这个问题。而不是使用chrome.storage.local.set({key:val[key]+param1});

我已经用一个对象替换了 json 字符串{key:val[key]+param1}

var obj = {};       
var key = "myKey";  
obj[key] += param1;   
chrome.storage.local.set(obj);
Run Code Online (Sandbox Code Playgroud)

这里obj有价值{"myKey":"the appended value"}