SessionStorage và LocalStorage cho phép lưu các cặp khóa / giá trị trong trình duyệt web. Giá trị phải là một chuỗi và lưu các đối tượng js không phải là nhỏ.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Ngày nay, bạn có thể tránh giới hạn này bằng cách tuần tự hóa các đối tượng thành JSON và sau đó giải tuần tự hóa chúng để khôi phục các đối tượng. Nhưng API lưu trữ luôn vượt qua setItem
và getItem
các phương thức.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Tôi có thể tránh giới hạn này không?
Tôi chỉ muốn thực hiện một cái gì đó như thế này:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Tôi đã thử defineGetter
và defineSetter
các phương thức để chặn các cuộc gọi nhưng đó là một công việc tẻ nhạt, bởi vì tôi phải xác định tất cả các thuộc tính và mục tiêu của tôi là không biết các thuộc tính trong tương lai.