This question already has answers here:
How to use a variable for a key in a JavaScript object literal?
                            
                                (15个答案)
                            
                    
                12个月前关闭。
        

    

我正在尝试将chrome的存储集成到我的扩展程序中。而且,一旦写入数据,我就很难掌握数据的存储方式,因为我尝试的任何方法似乎都无效。
我想做的就是用一个特定的键存储一个对象。但是该密钥是动态生成的运行时。

所以到目前为止,我有这样的事情。

 let storage = {};
storage["status"] = "no status";
chrome.storage.local.set(storage,function(){

});


当我这样做时,密钥会自动变为“存储”,但我不想这样做。因为我希望键每次都唯一。所以理想情况下,我想做的是

let storageid = generateid();//generate unique storage id
let storage = {};
storage["status"] = "no status";
chrome.storage.local.set({storageid: storage},function(){

});


但是即使在那种情况下,键仍然是“ storageid”,并不一定是变量storageid中保存的值。
由于我对chrome的本地存储的工作原理了解甚少,因此很难解释这个问题。因此,任何帮助将不胜感激。

最佳答案

形成JS对象时,您正在编写{storageid: storage}。这里的storageid仍然只是字符串"storageid"。您要查找的是变量本身的值。
{[storageid]: storage}将变量storageid解释为其值。

在构建Chrome插件时,这并不重要,但我认为值得指出的是,这是JS的一种更现代的语法,在IE中不起作用。在那里,解决方案仍然必须存在。

var storageObj = {}
storageObj[storageid] = storage

关于javascript - chrome.storage.local编写 key 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56368041/

10-13 21:38