chrome.storage.local.set使用变量键名

时间:2012-07-27 17:27:08

标签: javascript google-chrome-extension

在Google Chrome扩展程序中,我想使用chrome.storage.local(而不是localStorage),因为:

  1. 使用键值对,值可以是任何对象(与仅字符串相对)
  2. 使用setter storage.set对数据模型的更改可以触发事件监听器
  3. 使用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'}
    });
    

2 个答案:

答案 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);
});