SessionStorage et LocalStorage permettent de sauvegarder des paires clé/valeur dans un navigateur web. La valeur doit être une chaîne de caractères, et la sauvegarde des objets js n'est pas triviale.
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 le setItem
y getItem
méthodes.
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 ça :
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
J'ai essayé le defineGetter
y defineSetter
pour intercepter les appels mais c'est un travail fastidieux, car je dois définir toutes les propriétés et mon objectif n'est pas de connaître les propriétés futures.
1 votes
J'y ai pensé moi-même. Je suppose que beaucoup de gens y ont pensé. Mais je ne pense pas que les méthodes getter et setter soient un fardeau trop lourd. BTW ; vous pouvez sérialiser et parser avec JavaScript et MS supporte enfin les mêmes objets standards que tout le monde. L'époque où l'on avait besoin de paquets comme JSON et jQuery touche rapidement à sa fin.
1 votes
Je suppose que je ne vois pas la limitation. Il peut sembler exagéré d'utiliser JSON.stringify et JSON.parse si vous n'avez que des objets triviaux, mais si vous avez des objets de données de bonne taille, ces deux méthodes font beaucoup de travail pour vous.
5 votes
"Puis-je éviter cette limitation ?" semble être une question
1 votes
Limitation ou pas, cette question m'a aidé à résoudre un problème, donc merci.