HTML and CSS Reference
In-Depth Information
Come abbiamo detto in precedenza, le modalità di accesso allo storage locale e a quello di
sessione sono identiche poiché entrambi implementano la stessa interfaccia; l'esempio 8.15
mostra come sia possibile creare una funzione getStorage() per semplificare l'accesso
ai due tipi di storage, astraendo dal tipo richiesto e riducendo così al minimo la dipendenza
con il sistema di persistenza scelto.
Esempio 8.15 - Usare il pattern Abstract Factory per accedere a Local o Session Storage.
function getStorage(useSessionStorage) // true|false
{
var name = useSessionStorage ? "sessionStorage" : "localS-
torage";
return (isStorageAvailable(name)) ? window[name] : null;
};
I dati (sia le chiavi sia i valori) vengono comunemente salvati nello storage come stringhe
(sebbene in teoria la specifica ammetta qualsiasi tipo), per cui potrebbe risultare necessario
effettuare dei cast in fase di estrazione. Serializzare in formato JSON i valori salvati nello
storage potrebbe essere una soluzione ottimale in quanto, oltre a semplificare la conversio-
ne dei tipi primitivi come valori booleani, numeri e date, consente anche di gestire facil-
mente tipi complessi (object, array ecc.). L'esempio 8.16 mostra un esempio di serializza-
zione di un oggetto in una stringa JSON, usando il metodo nativo JSON. stringify e
la relativa deserializzazione mediante JSON.parse .
Esempio 8.16 - Scrivere e leggere dallo storage.
//recupera lo storage
var storage = getStorage();
//crea un utente, lo serializza in JSON e lo scrive nello
storage
var user = { Id: 123, Name: "Stefano" };
var serializedUser = JSON.stringify(user);
storage.setItem("user", serializedUser);
//recupera l'utente dallo storage e lo deserializza
var storageItem = storage.getItem("user");
var user2 = JSON.parse(storageItem);
 
Search WWH ::




Custom Search