Javascript 在chrome.storage.local.set中使用变量键
我正在创建一个chrome扩展。 我不知道如何使用变量作为Javascript 在chrome.storage.local.set中使用变量键,javascript,google-chrome-extension,google-chrome-storage,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]); } 在这里,我试图获取val[key]的值,并附
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]);
}
在这里,我试图获取val[key]
的值,并附加一个字符串param1
,然后使用相同的键将其放回存储器。但我不能这样做。
警报框始终显示未定义
但是当我尝试不使用变量键时,效果很好
chrome.storage.local.get('myKey', function(val) {
chrome.storage.local.set({myKey:val['myKey']+param1}); //appending param1
alert(val['myKey']);
}
问题是我使用的chrome.storage.local.set
不仅可以有字符串参数,还可以有对象参数。在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]);
});
注意:您可能希望验证是否成功。这可以通过使用回调来完成。例如:
chrome.storage.local.set(val, function() {
if (chrome.extension.lastError) {
alert('An error occurred: ' + chrome.extension.lastError.message);
}
});
我已经解决了这个问题。
而不是使用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);
这里的obj
具有值{“myKey”:“附加值”}
看起来也不错,但它看起来不太像val是否已经存在,并且多次重复相同的值。如果您不想更新,可能希望将其更新为ES6计算属性名。或者,如果您不想更新,请将其复制到。