在Google Chrome扩展程序中,我想使用chrome.storage.local
(而不是localStorage),因为:
storage.set
对数据模型的更改可以触发事件监听器使用storage.set
,我如何拥有变量键名?
注意:如果我不使用setter,我可以storage[v1]
,但对对象的更改不会触发事件监听器。
var storage = chrome.storage.local;
var v1 = 'k1';
storage.set({v1:'s1'});
storage.get(v1,function(result){
console.log(v1,result);
//console output = k1 {}
});
storage.get('v1',function(result){
console.log(result);
//console output = {v1:'s1'}
});
答案 0 :(得分:41)
这就是你要找的地方吗?
var storage = chrome.storage.local;
var v1 = 'k1';
var obj= {};
obj[v1] = 's1';
storage.set(obj);
storage.get(v1,function(result){
console.log(v1,result);
//console output = k1 {v1:'s1'}
});
storage.get('v1',function(result){
console.log(result);
//console output = {v1:'s1'}
})
答案 1 :(得分:16)
2016年,Chrome(以及Firefox和Edge - 每个人都使用Chrome扩展模型)支持ES6 Computed Property Names。
有了这个,任务就变得更简单了:
var storage = chrome.storage.local;
var v1 = 'k1';
storage.set({
[v1]: 's1' // Will evaluate v1 as property name
});
storage.get(v1, function(result) {
console.log(v1, result);
});