javascript - 本地存储3个对象

标签 javascript

可以将 3 个对象添加到本地存储,而不仅仅是值和键?我尝试了一些代码但不起作用。

我想要:

  1. 3 个对象
  2. 3个输入文字
  3. 保存按钮,用于保存页面上的文本

最佳答案

不,你不能。 localStorage(和sessionStorage)只能存储键值对,其中值只能是字符串

您能做的最好的事情就是使用某种序列化算法来存储普通对象。 JSON 是最常见的,因此您可以使用 JSON.stringify 将对象转换为字符串,使用 JSON.parse 将其转换回对象 - 这将<不是“相同”(即对相同数据的引用),而是等价的东西。

这意味着发生这种情况:

var a = {value: 5},
    j = JSON.stringify(a);

var b = a,
    c = JSON.parse(j);

a.value = 7;
b.value;   // 7
c.value;   // 5

但这无论如何都不适用于 DOM 元素。它们无法存储,期间。就像任何非 Object 类的任何其他对象一样,除非它们提供了 toJSON 方法来可靠地将它们转换为字符串,最终可以解析回来。

JSON.stringify 在内部使用 toJSON 方法将对象转换为字符串。

例如,

Date 对象提供 toJSON 方法。您可以使用 Date.parse 将字符串转换回来:

var d = new Date(),
    j = d.toJSON(); // e.g. "2014-02-22T10:35:41.579Z"

var o = new Date(Date.parse(j));

o.getTime() === d.getTime(); // true
o === d;                     // false

(请记住,IE7 及更低版本本身不支持 JSON。)

但是,您不能对 DOM 元素执行相同的操作,因此 2 和 3 不可行。

关于javascript - 本地存储3个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21952942/

相关文章:

javascript - 如何访问在 Shiny 中渲染的 rhandsontable 的 JS 变量名称?

javascript - 构建网络阅读辅助工具 : row selector

Javascript:脚本在函数调用时终止

javascript - 使一个 div 的大小等于另一个

javascript - 在 WordPress 中禁用移动设备上的排队 Javascript

javascript - 如何使用 javascript 获取动态变化的 div 的高度?

javascript - Backbone.js 动态模型

javascript - 如何检查带有 bool 值的复选框

javascript - 游戏循环 requestAnimFrame (javascript/canvas)

javascript - 将 JavaScript 字符串变量转换为小数/货币