Javascript 重建从localStorage检索的对象函数

Javascript 重建从localStorage检索的对象函数,javascript,json,local-storage,Javascript,Json,Local Storage,我正在使用JSON.stringify和JSON.parse从localStorage存储和检索对象。但是,JSON.stringify似乎从对象中去掉了实例函数。因此,在JSON.parse之后,我不能再调用myObject.doSomething()。我知道我可以手动附加此函数:myObject.doSomething=MyClass.prototype.myFunction,但如果此操作在web应用程序中重复多次,则会很麻烦。人们通常如何在JavaScript中实现这一点 JSON显然没有

我正在使用
JSON.stringify
JSON.parse
localStorage
存储和检索对象。但是,
JSON.stringify
似乎从对象中去掉了实例函数。因此,在
JSON.parse
之后,我不能再调用
myObject.doSomething()
。我知道我可以手动附加此函数:
myObject.doSomething=MyClass.prototype.myFunction
,但如果此操作在web应用程序中重复多次,则会很麻烦。人们通常如何在JavaScript中实现这一点

JSON显然没有保留函数本身,它只存储简单类型的变量。在本文中,我解决这个问题的方法是在我的类中使用restore方法,并使用JSON中的数据简单地调用该方法,以便使用属于该类的数据重新填充该类


在我的代码库中,我广泛地使用了值对象(VO)设计模式来实现这一点,它对我来说非常有效。不过,请注意,如果您尝试跨windows进行通信,Ie7/Ie8对这种方法并不十分友好。我记得,我认为IE7没有为某些属性返回正确的“typeof”,因此在涉及跨窗口通信时,我在还原过程中遇到了一系列挑战。

localStorage
允许将对象保留为值,键应该是字符串。你想把它们存储为字符串有什么特别的原因吗?唯一的原因是我在这个网站的某个地方读到,大多数当前的浏览器只支持本地存储的字符串,尽管规范说它们应该支持object。这是真的吗?我刚刚用Chrome进行了测试,从localStorage检索的对象只是
[object object]
,我该如何恢复它的类型?我试图调用它的实例方法和属性,但它们没有定义。我明白了,我错了。很抱歉给你带来了困惑
localStorage
只是对值调用
toString
方法并将它们存储为字符串。所以我想在JS中没有优雅的方法来实现这一点?我将再等几天,看看是否有其他人提出了任何不同的建议,然后再将此标记为答案。。。