2017-07-18 28 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 
相关问题