json.stringify不处理对象的方法
json.stringify不处理对象的方法
我正在尝试开发一个离线HTML5应用,应该在大多数现代浏览器(Chrome,Firefox,IE 9+,Safari,Opera)中运行。由于Safari尚不支持IndexedDB,并且WebSQL已被弃用,所以我决定使用localStorage来存储用户生成的JavaScript对象,并使用JSON.stringify()
/JSON.parse()
来存储或提取这些对象。然而,我发现JSON.stringify()
不能处理方法。下面是一个带有简单方法的示例对象:
var myObject = {}; myObject.foo = 'bar'; myObject.someFunction = function () {/*在此函数中的代码*/}
如果我把这个对象进行字符串化(然后放入localStorage),只会保留myObject.foo
,而不是myObject.someFunction()
。
//将对象放入localStorage localStorage.setItem('myObject',JSON.stringify(myObject)); //从localStorage中取出并赋值给myObject myObject = localStorage.getItem('myObject'); //undefined! myObject.someFunction
我相信你们中的许多人可能已经了解到这个限制/特性/不管你想叫它什么。我想到的解决办法是创建一个带有方法的对象(myObject = new objectConstructor()
),从localStorage中提取对象属性,并将它们赋值给我创建的新对象。我觉得这是一种绕弯子的方法,但我对JavaScript世界还很陌生,所以这是我解决问题的方式。所以这是我的重要问题:我希望整个对象(属性+方法)都包含在localStorage中。我该如何做?如果你可以给我展示一个更好的算法,或者也许还有我不知道的另一个JSON方法,我将非常感激。