This question already has answers here:
How to use a variable for a key in a JavaScript object literal?
(15个答案)
12个月前关闭。
我正在尝试将chrome的存储集成到我的扩展程序中。而且,一旦写入数据,我就很难掌握数据的存储方式,因为我尝试的任何方法似乎都无效。
我想做的就是用一个特定的键存储一个对象。但是该密钥是动态生成的运行时。
所以到目前为止,我有这样的事情。
当我这样做时,密钥会自动变为“存储”,但我不想这样做。因为我希望键每次都唯一。所以理想情况下,我想做的是
但是即使在那种情况下,键仍然是“ storageid”,并不一定是变量storageid中保存的值。
由于我对chrome的本地存储的工作原理了解甚少,因此很难解释这个问题。因此,任何帮助将不胜感激。
(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