Cả truy cập thuộc tính trực tiếp ( localStorage.item
hoặc localStorage['item']
) và sử dụng giao diện chức năng ( localStorage.getItem('item')
) đều hoạt động tốt. Cả hai đều là tiêu chuẩn và tương thích với nhiều trình duyệt. * Theo thông số kỹ thuật :
Các tên thuộc tính được hỗ trợ trên đối tượng Lưu trữ là các khóa của mỗi cặp khóa / giá trị hiện có trong danh sách được liên kết với đối tượng, theo thứ tự các khóa được thêm lần cuối vào vùng lưu trữ.
Chúng chỉ hoạt động khác nhau khi không tìm thấy cặp khóa / giá trị nào với tên được yêu cầu. Ví dụ, nếu chìa khóa 'item'
không tồn tại, var a = localStorage.item;
sẽ cho kết quả a
là undefined
, trong khi var a = localStorage.getItem('item');
sẽ dẫn đến a
có giá trị null
. Như bạn đã phát hiện, undefined
và null
không thể hoán đổi cho nhau trong JavaScript / EcmaScript. :)
CHỈNH SỬA: Như Christoph đã chỉ ra trong câu trả lời của mình , giao diện chức năng là cách duy nhất để lưu trữ và truy xuất các giá trị trong các khóa bằng các thuộc tính được xác định trước một cách đáng tin cậy localStorage
. (Có sáu trong số này: length
, key
, setItem
, getItem
, removeItem
, và clear
.) Vì vậy, ví dụ, sau đây sẽ luôn luôn làm việc:
localStorage.setItem('length', 2);
console.log(localStorage.getItem('length'));
Đặc biệt lưu ý rằng câu lệnh đầu tiên sẽ không ảnh hưởng đến thuộc tính localStorage.length
(ngoại trừ có thể tăng nó lên nếu chưa có khóa nào 'length'
trong đó localStorage
). Về mặt này, thông số kỹ thuật dường như không nhất quán.
Tuy nhiên, những điều sau có thể sẽ không làm được những gì bạn muốn:
localStorage.length = 2;
console.log(localStorage.length);
Điều thú vị là đầu tiên là không chọn trong Chrome, nhưng đồng nghĩa với lệnh gọi chức năng trong Firefox. Thứ hai sẽ luôn ghi lại số lượng khóa có trong localStorage
.
* Điều này đúng với các trình duyệt hỗ trợ lưu trữ web ngay từ đầu. (Điều này bao gồm hầu hết tất cả các trình duyệt dành cho máy tính để bàn và thiết bị di động hiện đại.) Đối với các môi trường mô phỏng lưu trữ cục bộ bằng cookie hoặc các kỹ thuật khác, hành vi phụ thuộc vào miếng đệm được sử dụng. Một số polyfills cho localStorage
có thể được tìm thấy ở đây .
getItem
vàsetItem
là cách thức hoạt động được chuẩn hóa .