Sowohl der direkte Zugriff auf Eigenschaften ( localStorage.item
oder localStorage['item']
) als auch die Verwendung der Funktionsschnittstelle ( localStorage.getItem('item')
) funktionieren einwandfrei. Beide sind Standard- und browserübergreifend kompatibel. * Gemäß der Spezifikation :
Die unterstützten Eigenschaftsnamen in einem Speicherobjekt sind die Schlüssel jedes Schlüssel / Wert-Paares, das derzeit in der dem Objekt zugeordneten Liste vorhanden ist, in der Reihenfolge, in der die Schlüssel zuletzt zum Speicherbereich hinzugefügt wurden.
Sie verhalten sich nur anders, wenn kein Schlüssel / Wert-Paar mit dem angeforderten Namen gefunden wird. Zum Beispiel, wenn Schlüssel 'item'
nicht vorhanden ist , var a = localStorage.item;
wird in Folge a
sein undefined
, während var a = localStorage.getItem('item');
in Folge wird a
mit dem Wert null
. Wie Sie festgestellt haben undefined
und null
in JavaScript / EcmaScript nicht austauschbar sind. :) :)
BEARBEITEN: Wie Christoph in seiner Antwort hervorhebt , ist die funktionale Schnittstelle die einzige Möglichkeit, Werte unter Schlüsseln, die den vordefinierten Eigenschaften von entsprechen, zuverlässig zu speichern und abzurufen localStorage
. (Es gibt sechs davon: length
, key
, setItem
, getItem
, removeItem
, und clear
.) So zum Beispiel der folgende wird immer funktionieren:
localStorage.setItem('length', 2);
console.log(localStorage.getItem('length'));
Beachten Sie insbesondere , dass die erste Aussage wird die Eigenschaft nicht beeinflussen localStorage.length
(außer vielleicht es erhöht wird, wenn kein Schlüssel ist 'length'
bereits in localStorage
). In dieser Hinsicht scheint die Spezifikation intern inkonsistent zu sein.
Folgendes wird jedoch wahrscheinlich nicht das tun, was Sie wollen:
localStorage.length = 2;
console.log(localStorage.length);
Interessanterweise ist das erste ein No-Op in Chrome, aber es ist gleichbedeutend mit dem Funktionsaufruf in Firefox. Der zweite protokolliert immer die Anzahl der vorhandenen Schlüssel localStorage
.
* Dies gilt für Browser, die in erster Linie Webspeicher unterstützen. (Dies schließt so ziemlich alle modernen Desktop- und mobilen Browser ein.) In Umgebungen, in denen lokaler Speicher mithilfe von Cookies oder anderen Techniken simuliert wird, hängt das Verhalten von der verwendeten Shim ab. Mehrere polyfills für localStorage
finden sich hier .
getItem
undsetItem
sind die standardisierte Art, Dinge zu tun.