SessionStorage dan LocalStorage memungkinkan untuk menyimpan pasangan kunci / nilai di browser web. Nilai harus berupa string, dan menyimpan objek js tidak sepele.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Saat ini, Anda dapat menghindari batasan ini dengan membuat serialisasi objek ke JSON, dan kemudian membatalkan deserialisasi untuk memulihkan objek. Tetapi API Penyimpanan selalu melewati setItem
dan getItem
metode.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Bisakah saya menghindari batasan ini?
Saya hanya ingin menjalankan sesuatu seperti ini:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Saya telah mencoba defineGetter
dan defineSetter
metode untuk mencegat panggilan tetapi itu pekerjaan yang membosankan, karena saya harus mendefinisikan semua properti dan target saya bukan untuk mengetahui properti masa depan.