Zarówno bezpośredni dostęp do właściwości ( localStorage.item
lub localStorage['item']
), jak i użycie interfejsu funkcjonalnego ( localStorage.getItem('item')
) działają dobrze. Oba są standardowe i kompatybilne z różnymi przeglądarkami. * Zgodnie ze specyfikacją :
Obsługiwane nazwy właściwości w obiekcie Storage to klucze każdej pary klucz / wartość aktualnie znajdującej się na liście skojarzonej z obiektem, w kolejności, w jakiej klucze zostały ostatnio dodane do obszaru przechowywania.
Po prostu zachowują się inaczej, gdy żadna para klucz / wartość nie zostanie znaleziona z żądaną nazwą. Na przykład, jeśli klucz 'item'
nie istnieje, var a = localStorage.item;
spowoduje to a
istnienie undefined
, a while var a = localStorage.getItem('item');
będzie skutkować a
posiadaniem wartości null
. Jak odkryłeś , undefined
i null
nie są wymienne w JavaScript / EcmaScript. :)
EDYCJA: Jak wskazuje Christoph w swojej odpowiedzi , interfejs funkcjonalny jest jedynym sposobem niezawodnego przechowywania i pobierania wartości pod kluczami równymi wstępnie zdefiniowanym właściwościom localStorage
. (Istnieje sześć z nich: length
, key
, setItem
, getItem
, removeItem
, i clear
.) Tak więc, na przykład, co następuje zawsze będzie działać:
localStorage.setItem('length', 2);
console.log(localStorage.getItem('length'));
Zwróć uwagę w szczególności, że pierwsza instrukcja nie wpłynie na właściwość localStorage.length
(z wyjątkiem być może jej zwiększenia, jeśli nie ma 'length'
już klucza localStorage
). Pod tym względem specyfikacja wydaje się być wewnętrznie niespójna.
Jednak następujące elementy prawdopodobnie nie zrobią tego, co chcesz:
localStorage.length = 2;
console.log(localStorage.length);
Co ciekawe, pierwszy nie działa w Chrome, ale jest synonimem wywołania funkcjonalnego w Firefoksie. Drugi zawsze rejestruje liczbę obecnych kluczy localStorage
.
* Dotyczy to przede wszystkim przeglądarek obsługujących przechowywanie danych w Internecie. (Dotyczy to prawie wszystkich nowoczesnych przeglądarek na komputery stacjonarne i urządzenia mobilne). W przypadku środowisk symulujących przechowywanie lokalne przy użyciu plików cookie lub innych technik zachowanie zależy od zastosowanej podkładki. Kilka polyfillów localStorage
można znaleźć tutaj .
getItem
isetItem
są znormalizowanym sposobem działania.