2017-07-18 25 views

回答

4

總之:因爲本地存儲只能存儲字符串。

更長的答案是對象是複雜的數據結構,它們在引擎蓋下由對計算機內存不同部分的引用組成。您不能將它們轉儲到存儲區域,因爲當您讀取數據時,數據不會存儲在內存的這些部分。

因此,您需要以某種方式將數據序列化。

localStorage API 可能已被寫入自動執行此操作,但僅在某些情況下。這不是,你必須手動完成,這意味着你不得不知道你在做什麼,以便(a)如果你失去了數據,這不是由於localStorage API的怪異和神祕,以及(b)你可以選擇高效的內存(localStorage給你有限的空間)和簡單(只使用JSON.stringify)。

1

轉到開發人員工具(瀏覽器中的f12) - >應用程序> Locat存儲 - >此處的任何頁面。

你可以看到,這裏的所有項目都只是字符串。如果您想將object存儲在本地存儲,則需要將其轉換爲字符串(JSON.stringify),當你想再次使用你的對象,你必須把它轉換回一個對象(JSON.parse

-2

的localStorage以字符串的形式保存數據。如果保存一個對象,它將保存爲'[object Object]',因爲LocalStorage將在該對象上調用.toString()

0

本地存儲器用於將字符串存儲爲鍵值對。您可以將對象序列化爲字符串來存儲對象,例如,

var object = {name:'somename'} 
var string = JSON.stringify(object); // serialise as string 
localStorage.setItem("name", string); // save string 
var name = localStorage.getItem("name"); // for retrieving as string 
var retrievedObj = JSON.parse(name) // for parse into object 
相關問題