Chrome.storage.local.set en utilisant un nom de clé variable

Dans Google Chrome Extension, je souhaite utiliser chrome.storage.local (par opposition à localStorage) car:

  1. Avec les paires clé-valeur, la valeur peut être n'importe quel objet (par opposition à la chaîne uniquement)
  2. Les modifications apportées au modèle de données à l'aide de setter storage.set peuvent déclencher un auditeur d'événements

Utilisation de storage.set , comment puis-je avoir un nom de clé variable?

Remarque: Si je n'utilise pas le setter, je peux faire le storage[v1] , mais les modifications apportées à l'objet ne déclencheront pas l'auditeur d'événement.

 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'} }); 

Est-ce ce que vous recherchez?

 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'} }) 

C'est 2016, et Chrome (et Firefox et Edge – tous utilisant le modèle d'extension Chrome) prennent en charge les noms de propriété calculés ES6.

Avec cela, la tâche devient plus simple:

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