小编use*_*759的帖子

json.stringify不处理对象方法

我正在尝试开发一个适用于大多数现代浏览器(Chrome,Firefox,IE 9 +,Safari,Opera)的离线HTML5应用程序.由于Safari尚未支持IndexedDB,并且不推荐使用WebSQL,因此我决定使用localStorage来存储用户生成的JavaScript对象和JSON.stringify()/ JSON.parse()以放入或拔出对象.但是,我发现JSON.stringify()不处理方法.这是一个带有简单方法的示例对象:

    var myObject = {};
    myObject.foo = 'bar';
    myObject.someFunction = function () {/*code in this function*/}
Run Code Online (Sandbox Code Playgroud)

如果我对这个对象进行字符串化(后来将其放入localStorage),那么所有将保留的对象myObject.foo都不是myObject.someFunction().

    //put object into localStorage
    localStorage.setItem('myObject',JSON.stringify(myObject));

    //pull it out of localStorage and set it to myObject
    myObject = localStorage.getItem('myObject');

    //undefined!
    myObject.someFunction
Run Code Online (Sandbox Code Playgroud)

我相信你们中的许多人可能已经知道这个限制/功能/无论你想要什么.我提出的解决方法是使用methods(myObject = new objectConstructor())创建一个对象,从localStorage中提取对象属性,并将它们分配给我创建的新对象.我觉得这是一个迂回的方法,但我是JavaScript世界的新手,所以这就是我解决它的方法.所以这是我的大问题:我希望将整个对象(属性+方法)包含在localStorage中.我该怎么做呢?如果您可以向我展示一个更好的算法,或者我可能不知道的其他JSON方法,我将非常感激.

javascript json local-storage

21
推荐指数
1
解决办法
2万
查看次数

标签 统计

javascript ×1

json ×1

local-storage ×1