SessionStorage และ LocalStorage ช่วยให้สามารถบันทึกคู่คีย์ / ค่าในเว็บเบราว์เซอร์ ค่าต้องเป็นสตริงและการบันทึกอ็อบเจ็กต์ js นั้นไม่สำคัญ
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
ทุกวันนี้คุณสามารถหลีกเลี่ยงข้อ จำกัด นี้ได้ด้วยการทำให้เป็นออบเจ็กต์เป็น JSON จากนั้นจึงยกเลิกการซีเรียลไลซ์เพื่อกู้คืนออบเจ็กต์ แต่ API การจัดเก็บข้อมูลผ่านsetItem
และgetItem
วิธีการเสมอ
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
ฉันสามารถหลีกเลี่ยงข้อ จำกัด นี้ได้หรือไม่?
ฉันแค่อยากจะทำอะไรแบบนี้:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
ฉันได้ลองdefineGetter
และdefineSetter
วิธีในการสกัดกั้นการโทร แต่เป็นงานที่น่าเบื่อเพราะฉันต้องกำหนดคุณสมบัติทั้งหมดและเป้าหมายของฉันคือไม่ทราบคุณสมบัติในอนาคต