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 setItemvà getItemcá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ử defineGettervà defineSettercá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.