Mit SessionStorage und LocalStorage können Schlüssel / Wert-Paare in einem Webbrowser gespeichert werden. Der Wert muss eine Zeichenfolge sein, und das Speichern von js-Objekten ist nicht trivial.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Heutzutage können Sie diese Einschränkung vermeiden, indem Sie Objekte in JSON serialisieren und anschließend deserialisieren, um die Objekte wiederherzustellen. Die Speicher-API durchläuft jedoch immer die Methoden setItem
und getItem
.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Kann ich diese Einschränkung vermeiden?
Ich möchte nur so etwas ausführen:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Ich habe die Methoden defineGetter
und versucht defineSetter
, die Aufrufe abzufangen, aber es ist eine mühsame Aufgabe, da ich alle Eigenschaften definieren muss und mein Ziel darin besteht, die zukünftigen Eigenschaften nicht zu kennen.