chrome.storage.sync.set不保存值

Dra*_*vuk 5 javascript google-chrome local-storage google-chrome-extension

因此,我对Google Chrome上的本地存储问题陷入了困境.根据我的研究,我的语法似乎是正确的,但由于某种原因,价值没有被保存.这是我的代码:

chrome.storage.sync.get(accName, function(data) {
    var accData = data[accName];
    // Stuff
    chrome.storage.sync.set({ accName: accData }, function() {
        alert('Data saved');
    });
});
Run Code Online (Sandbox Code Playgroud)

每次我重新运行它,data[accName]返回undefined.我已经尝试使用sync.set参数的文字值相同的代码(例如{ 'john32': ['fk35kd'] }),这似乎有效,所以我真的很困惑这个问题是什么.任何帮助,将不胜感激.

Dra*_*vuk 11

谢谢Rob.如上所述,问题是尝试插入accNameset语句中的对象文字.我最终得到的是一个带有'accName'属性的对象,而不是accName它自身的值.这是一个修复.

var obj = {};
obj[accName] = accData;
chrome.storage.sync.set(obj, function() {
    alert('Data saved');
});
Run Code Online (Sandbox Code Playgroud)

更新

ES6现在允许在对象文字中使用计算属性名称,因此可以通过以下方式实现上述目的:

chrome.storage.sync.set({ [accName]: accData }, function() {
    alert('Data saved');
});
Run Code Online (Sandbox Code Playgroud)