SessionStorage和LocalStorage允許在Web瀏覽器中保存鍵/值對。該值必須是一個字符串,並且保存js對象不是微不足道的。在sessionStorage中保存Javascript對象
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
現在,您可以通過將對象序列化爲JSON,然後反序列化它們以恢復對象來避免此限制。但是Storage 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
方法攔截電話,但它是一個單調乏味的工作,因爲我必須定義所有屬性和我的目標是不瞭解未來的屬性。
我想到的是我自己。我想很多人都有。但我認爲getter和setter方法不是一個太大的負擔。 BTW;你可以使用JavaScript進行序列化和解析,並且MS最終支持與其他人一樣的標準對象。像JSON和jQuery這樣的軟件包需求日益迅速到來。 – 2013-03-18 07:45:29
我想我沒有看到這個限制。如果你只有微不足道的對象,那麼使用JSON.stringify和JSON.parse看起來可能過於矯枉過正,但如果你有大小適中的數據對象,那麼這兩種方法正在爲你做很多工作。 – Robusto 2013-08-05 15:26:01
「我能避免這種限制嗎?」似乎是一個問題 – sonicblis 2014-06-19 21:17:46