SessionStorage et LocalStorage permettent d'enregistrer des paires clé / valeur dans un navigateur Web. La valeur doit être une chaîne et enregistrer les objets js n'est pas trivial.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
De nos jours, vous pouvez éviter cette limitation en sérialisant les objets en JSON, puis en les désérialisant pour récupérer les objets. Mais l'API de stockage passe toujours par les méthodes setItem
et getItem
.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Puis-je éviter cette limitation?
Je veux juste exécuter quelque chose comme ceci:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
J'ai essayé les méthodes defineGetter
et defineSetter
pour intercepter les appels, mais c'est un travail fastidieux, car je dois définir toutes les propriétés et ma cible n'est pas de connaître les propriétés futures.