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 setItemund 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 defineGetterund 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.