Speichern von JavaScript-Objekten in HTML5 localStorage und sessionStorage

Speichern von JavaScript-Objekten in HTML5 localStorage und sessionStorage
Speichern von JavaScript-Objekten in HTML5 localStorage und sessionStorage

Arbeiten mit Objekten im Web Storage

Bei der Arbeit mit HTML5 localStorage oder sessionStorage stoßen Entwickler häufig auf Probleme, wenn sie versuchen, JavaScript-Objekte zu speichern. Im Gegensatz zu primitiven Datentypen und Arrays scheinen Objekte in Zeichenfolgen umgewandelt zu werden, was zu Verwirrung und unerwarteten Ergebnissen führen kann.

Für viele Webanwendungen ist es von entscheidender Bedeutung, zu verstehen, wie Objekte mithilfe von Web Storage ordnungsgemäß gespeichert und abgerufen werden. In diesem Leitfaden erfahren Sie, warum Objekte in Zeichenfolgen konvertiert werden, und bieten eine einfache Problemumgehung, um sicherzustellen, dass Ihre Objekte korrekt gespeichert und abgerufen werden.

Befehl Beschreibung
JSON.stringify() Konvertiert ein JavaScript-Objekt oder einen JavaScript-Wert in eine JSON-Zeichenfolge und ermöglicht so die Speicherung in localStorage oder sessionStorage.
localStorage.setItem() Speichert ein Schlüssel-Wert-Paar im localStorage-Objekt, sodass Daten über Browsersitzungen hinweg bestehen bleiben.
localStorage.getItem() Ruft den mit einem bestimmten Schlüssel verknüpften Wert aus localStorage ab.
JSON.parse() Analysiert einen JSON-String und konvertiert ihn zurück in ein JavaScript-Objekt, wodurch das Abrufen komplexer Datenstrukturen ermöglicht wird.
sessionStorage.setItem() Speichert ein Schlüssel-Wert-Paar im sessionStorage-Objekt, sodass Daten für die Dauer der Seitensitzung bestehen bleiben.
sessionStorage.getItem() Ruft den mit einem bestimmten Schlüssel verknüpften Wert aus sessionStorage ab.

Effektives Speichern und Abrufen von Objekten im Web Storage

In JavaScript, localStorage Und sessionStorage sind Webspeicherobjekte, die es Ihnen ermöglichen, Schlüssel-Wert-Paare im Browser zu speichern. Allerdings unterstützen diese Speicherlösungen nur Strings, was bedeutet, dass der Versuch, ein JavaScript-Objekt direkt zu speichern, dazu führt, dass das Objekt in eine String-Darstellung wie z. B. konvertiert wird [object Object]. Um Objekte effektiv zu speichern, müssen Sie sie mit in einen JSON-String konvertieren JSON.stringify(). Diese Methode nimmt ein JavaScript-Objekt und gibt einen JSON-String zurück, der gespeichert werden kann localStorage oder sessionStorage.

Um das gespeicherte Objekt abzurufen, müssen Sie die JSON-Zeichenfolge mit zurück in ein JavaScript-Objekt konvertieren JSON.parse(). Diese Methode nimmt einen JSON-String und gibt das entsprechende JavaScript-Objekt zurück. Die in den obigen Beispielen bereitgestellten Skripte veranschaulichen diesen Prozess. Zunächst wird ein Objekt erstellt und mit in einen JSON-String konvertiert JSON.stringify() bevor es eingelagert wird localStorage verwenden localStorage.setItem(). Um das Objekt abzurufen, wird die JSON-Zeichenfolge abgerufen localStorage verwenden localStorage.getItem() und dann mithilfe von wieder in ein JavaScript-Objekt analysiert JSON.parse().

Speichern und Abrufen von JavaScript-Objekten in localStorage

Verwendung von JavaScript und JSON für localStorage

// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};

// Convert the object to a JSON string and store it in localStorage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the JSON string from localStorage and convert it back to an object
var retrievedObject = JSON.parse(localStorage.getItem('testObject'));

// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);

// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }

Speichern und Abrufen von JavaScript-Objekten in sessionStorage

Verwendung von JavaScript und JSON für sessionStorage

// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};

// Convert the object to a JSON string and store it in sessionStorage
sessionStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the JSON string from sessionStorage and convert it back to an object
var retrievedObject = JSON.parse(sessionStorage.getItem('testObject'));

// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);

// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }

Fortgeschrittene Techniken für Webspeicher

Bei Verwendung von HTML5 localStorage Und sessionStoragemüssen Entwickler häufig komplexere Daten als nur Zeichenfolgen speichern. Während die JSON-Serialisierung und -Deserialisierung für Basisobjekte effektiv ist, erfordern fortgeschrittenere Szenarios möglicherweise zusätzliche Überlegungen. Wenn Sie beispielsweise mit tief verschachtelten Objekten oder Objekten arbeiten, die Methoden enthalten, benötigen Sie einen ausgefeilteren Ansatz. Eine gängige Technik ist die Verwendung einer Bibliothek wie z Flatted oder circular-json um Zirkelverweise und komplexere Objektstrukturen zu verarbeiten.

Diese Bibliotheken erweitern den Standard JSON.stringify() Und JSON.parse() Methoden zur Unterstützung der Serialisierung und Deserialisierung von Objekten mit Zirkelverweisen, die eine robustere Lösung für die Speicherung von Objekten im Webspeicher ermöglichen. Eine weitere Überlegung ist die Datenkomprimierung. Für große Objekte können Sie Bibliotheken wie verwenden LZ-String um die Daten vor dem Speichern zu komprimieren localStorage oder sessionStorage, wodurch der Platzbedarf reduziert wird. Dies kann besonders nützlich für Anwendungen sein, die große Mengen an clientseitigen Daten speichern müssen.

Häufige Fragen zum Speichern von Objekten im Web Storage

  1. Kann ich Funktionen darin speichern? localStorage oder sessionStorage?
  2. Nein, Funktionen können nicht direkt im Webspeicher gespeichert werden. Sie können den Funktionscode als String speichern und verwenden eval() Um es neu zu erstellen, wird dies aufgrund von Sicherheitsrisiken im Allgemeinen nicht empfohlen.
  3. Wie gehe ich mit Zirkelverweisen in Objekten um?
  4. Verwenden Sie Bibliotheken wie Flatted oder circular-json die für die Verarbeitung von Zirkelverweisen in JavaScript-Objekten konzipiert sind.
  5. Wofür gilt das Speicherlimit? localStorage?
  6. Das Speicherlimit für localStorage beträgt normalerweise etwa 5 MB, kann jedoch je nach Browser variieren.
  7. Kann ich Daten vor dem Speichern komprimieren?
  8. Ja, Sie können Bibliotheken wie verwenden LZ-String um Ihre Daten vor der Speicherung zu komprimieren localStorage oder sessionStorage.
  9. Wie speichere ich ein Array von Objekten?
  10. Konvertieren Sie das Array mit in einen JSON-String JSON.stringify() bevor Sie es einlagern localStorage oder sessionStorage.
  11. Ist die Speicherung sensibler Daten sicher? localStorage?
  12. Nein, die Speicherung vertraulicher Daten ist nicht sicher localStorage da es über JavaScript zugänglich ist und bei einem Angriff auf die Website gefährdet werden kann.
  13. Kann ich benutzen localStorage über verschiedene Domänen hinweg?
  14. NEIN, localStorage ist auf denselben Ursprung beschränkt, d. h., es kann nicht über verschiedene Domänen hinweg darauf zugegriffen werden.
  15. Was passiert, wenn der Benutzer seine Browserdaten löscht?
  16. Alle Daten gespeichert in localStorage Und sessionStorage werden entfernt, wenn der Benutzer seine Browserdaten löscht.

Abschließende Gedanken zur Verwaltung von Objektspeicher

Das effektive Speichern und Abrufen von Objekten im HTML5-Webspeicher erfordert die Konvertierung von Objekten in JSON-Strings mit JSON.stringify() und sie dann wieder mit analysieren JSON.parse(). Diese Methode stellt sicher, dass die Daten über verschiedene Browsersitzungen hinweg intakt und nutzbar bleiben. Durch das Verständnis und die Nutzung dieser Techniken können Entwickler localStorage und sessionStorage für komplexere Datenverwaltungsaufgaben nutzen und so die Funktionalität und Leistung ihrer Webanwendungen verbessern.