javascript - page - chrome.storage.local.set usando un nombre de clave variable
localstorage inspector chrome (2)
¿Es esto lo que buscabas?
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''}
})
En una extensión de Google Chrome, quiero usar chrome.storage.local
(a diferencia de localStorage) porque:
- Con pares clave-valor, el valor puede ser cualquier objeto (a diferencia de la cadena)
- Los cambios en el modelo de datos utilizando setter
storage.set
pueden desencadenar un detector de eventos
Usando storage.set
, ¿cómo puedo tener un nombre de clave variable?
Nota: Si no uso el setter, puedo hacer storage[v1]
, pero los cambios en el objeto no activarán el detector de eventos.
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''}
});
Es 2016, y Chrome (y Firefox, y Edge, todos los que usan el modelo de extensión de Chrome) son compatibles con los Nombres de propiedad calculados de ES6.
Con eso, la tarea se vuelve más sencilla:
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);
});