我正在尝试将数组存储在chrome.storage中。这是我的setter和getter函数:

chrome.storage.local.get({favs: []}, function(items) {
    if (!chrome.runtime.error) {
        console.log("retrieving data"+items);
        favs = items.favs;
        console.log("isarray:"+ favs instanceof Array);
    }
});
chrome.storage.local.set({ favs : favs }, function() {
    if (chrome.runtime.error) {
        console.log("Runtime error.");
    } else{
        console.log("storing data")
    }
});


但是行console.log("isarray:"+ favs instanceof Array);返回false。请告诉我我要去哪里错了?

最佳答案

您应该使用括号将favs instanceof Array包裹起来,如下所示:(favs instanceof Array)这样您的代码将如下所示:

chrome.storage.local.get({favs: []}, function(items) {
    if (!chrome.runtime.error) {
        console.log("retrieving data"+items);
        favs = items.favs;
        // (wrap with parenthesis)
        console.log("isarray:" + (favs instanceof Array) );
    }
});
...


如果您没有用括号括起来,javascript会尝试评估"isarray:" + favs是否是Array的实例,显然不是(字符串+数组=字符串)。

关于javascript - 将数组保存在chrome.storage中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48781891/

10-11 06:07