可以将3对象添加到本地存储中,而不仅仅是值和密钥?我试过一些密码但没用。
我要:
发布于 2014-02-22 10:38:33
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方法来可靠地将它们转换为字符串,而字符串最终可以被解析回来。
toJSON方法由JSON.stringify内部使用,用于将对象转换为字符串。
例如,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是不可行的。
发布于 2014-02-22 10:27:25
很快就不会了。只能存储字符串.类型的键值。
但是,你得看看:Storing Objects in HTML5 localStorage
他们通过对物体进行串紧来解释解决办法。
引用CMS(接受答复):
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject)); https://stackoverflow.com/questions/21952942
复制相似问题