localStorage - getItem / setItem-Funktionen verwenden oder Objekt direkt zugreifen?
Gibt es einige Vorteile der Verwendung der Methoden definiert, über das localStorage-Objekt versus Zugriff auf die Objekt-Eigenschaften lassen sich direkt? Zum Beispiel, anstatt:
var x = localStorage.getItem(key);
localStorage.setItem(key, data);
Ich bisher getan habe:
var x = localStorage[key];
localStorage[key] = data;
Gibt es etwas falsch mit diesem?
InformationsquelleAutor der Frage DisgruntledGoat | 2012-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht wirklich, Sie sind im Grunde genau das gleiche. Verwendet man Kapselung (getter/setter) zum besseren Schutz der Daten und für die einfache Nutzung. Man sollte diesen Stil benutzen (für die Sicherheit).
Den anderen ermöglicht eine bessere Handhabung beim Namen(Schlüssel) unbekannt sind und für arrays und Schleifen. Verwenden
.key()
und.length
Durchlaufen Ihre storage-Elemente, ohne zu wissen, Ihre tatsächlichen Namen.Ich fand, dass dies eine großartige Ressource : http://diveintohtml5.info/storage.html
Diese Frage könnte mehr Einsicht als auch einige: HTML5 localStorage-Taste, um
Nachtrag:
Klar es gab einige Verwirrung über die Kapselung. Schauen Sie sich dieses kurze Wikipedia. Aber im ernst, ich würde hoffen, dass der Nutzer dieser Webseite wissen, wie google.
Bewegen Sie sich auf die Kapselung die Idee, dass Sie wenig in-und out-Portale für die Kommunikation mit einem anderen system. Sagen, Sie machen einen API Paket für andere zu verwenden. Angenommen, Sie haben eine Reihe von Informationen in das API-system wird aktualisiert von user-input. Sie konnten machen die Nutzer von der API direkt setzen, dass die Informationen im array... mit der
array[key]
Methode. ODER nutzen Sie Kapselung. Nehmen Sie den code, fügt ihn in das array und wickeln Sie es in eine Funktion (sagen wir, einsetArray()
odersetWhateverMakesSense()
- Funktion), die der Benutzer von deine API-Aufrufe hinzufügen, um diese Art von Informationen. Dann, in diesemset
Funktion können Sie die Daten für die Probleme, können Sie es hinzufügen, um das array in der richtigen Weise, wenn Sie es brauchenpush
ed odershift
ed auf das array in einer bestimmten Weise...etc. Sie Steuern, wie die Eingabe des Benutzers wird in das eigentliche Programm. So von sich es nicht die Sicherheit, sondern ermöglicht es, für die Sicherheit der von Ihnen geschrieben, der Autor des API. Dies ermöglicht auch eine bessere Versionskontrolle/Update als Nutzer deiner API nicht haben, um code umgeschrieben werden, wenn Sie sich entscheiden, um interne änderungen. Aber das ist inhärent gut OOP jedenfalls.In dem Fall hier von javascript und die
localStorage
Objekt, haben Sie schon geschrieben, diese API, Sie sind der Autor, und wir sind seine Nutzer. Wenn die Autoren entscheiden sich zu ändern, wielocalStorage
funktioniert, dann wird es weniger wahrscheinlich zu haben, um schreiben Sie Ihre code ein, wenn die Kapselung von Methoden verwendet wurden. Aber wir alle wissen, dass seine sehr unwahrscheinlich, dass diese Ebene der Veränderung jemals passieren wird, zumindest nicht in absehbarer Zeit. Und da die Autoren nicht haben, die inhärente verschiedenen Sicherheits-checks zu machen, hier, dann, derzeit, beide Möglichkeiten der VerwendunglocalStorage
sind im wesentlichen die gleichen. Es ist wie eine Art Unterlegscheibe. Aber wir können uns leicht machen, unsere eigene Kapselung überschreiben/ersetzen der vorhandenen Verkapselung umlocalStorage
um unsere eigene Sicherheit überprüft.PT
InformationsquelleAutor der Antwort Pimp Trizkit
Ich denke, Sie sind genau die gleichen, das einzige, was die Dokumentation Staaten:
Wenn die vollständigen shim, jedoch heißt es, dass:
und der begrenzten shim:
InformationsquelleAutor der Antwort jbabey
Einer der größten Vorteile, die ich sehe, ist, dass ich nicht haben zu prüfen, ob ein Wert definiert oder nicht, bevor ich JSON.parse (), da getItem() gibt NULL zurück, im Gegensatz zu undefined.
InformationsquelleAutor der Antwort Hintron
Solange Sie nicht die "dot-notation" wie Fenster."localStorage".Schlüssel sind Sie wahrscheinlich OK, denn es ist nicht verfügbar in Windows Phone 7. Habe ich noch nicht getestet mit Klammern (dein zweites Beispiel). Persönlich verwende ich immer die set-und get-Funktionen (dein erstes Beispiel).
InformationsquelleAutor der Antwort helonaut