如何使用本地存储中的方法存储JavaScript对象?

时间:2017-12-12 03:01:11

标签: javascript

我有一个我正在创建的神经网络库,其中包含存储在数组中的嵌套对象。我需要能够将这些对象的状态保存到本地存储。我试图使用JSON.stringify将最高级别的网络对象转换为我可以保存的东西,但是当我JSON.parse()它返回时,它不包含方法。

The code can be found here.

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

他们中的大多数人不会建议在JSON对象中持久保存函数(行为),这只是为了携带数据。 如果你想用函数序列化对象,你需要覆盖它们,下面的代码可以帮助你。

这将有助于您序列化功能。

var json = function(obj){ return JSON.stringify(obj, function(key, value) {
  if (typeof value === 'function') {
    return value.toString();
  } else {
    return value;
  }
})};

我已经创建了一个用于测试的对象rama, json(rama)的输出将是

 "{\"myName\":\"Ramasamy Kasiviswanathan\",\"myfunction\":\"function(input){\\nconsole.log('input', input);\\n}\"}"

存储在localStorage中,

localStorage.setItem('ramaLocal',json(rama));

从LocalStorage中检索值

 ramadeserialize = eval("JSON.parse(localStorage.getItem('ramaLocal'))");

O / P将是:

Object { myName: "Ramasamy Kasiviswanathan", myfunction: "function(input){\nconsole.log('input', input);\n}" }

参考: json.stringify does not process object methods