在localstorage中保存一个函数

Nai*_*gel 6 javascript json local-storage

我正在处理一些包含大量数据的对象,这些对象要在浏览器中显示和操作,我想将它保存在本地存储中.为了保存对象,我使用了JSON.stringify(),所以一切都变成了文本,而且效果很好

{
"bindingRef": [],
"primo": {
    "name": "primo",
    "modifiable": true,
    "binded": false,
    "isInteger": false,
    "label": "Numero di Primi"
},
"secondo": {
    "name": "secondo",
    "modifiable": true,
    "binded": false,
    "isInteger": false,
    "label": "Numero di Secondi"
}
}
Run Code Online (Sandbox Code Playgroud)

现在我试图通过将函数转换为字符串然后保存它来保存函数

JSON.stringify(myFunction.toString());
Run Code Online (Sandbox Code Playgroud)

但输出就是这个

"savedFunction": "function () {\n\t\t\t\tvar tot = menu.primo.get() * 6 + menu.secondo.get() * 8 + menu.dolce.get() * 4;\n\t\t\t\tif (menu.sconto.get()) {\n\t\t\t\t\treturn tot * 0.90;\n\t\t\t\t} else {\n\t\t\t\t\treturn tot;\n\t\t\t\t}\n\t\t\t}"
Run Code Online (Sandbox Code Playgroud)

这是在本地存储中保存功能的正确方法还是有更好的方法来做到这一点?如果这是正确的方法,有没有办法简单地删除任何制表符/缩进字符或我应该操纵字符串,例如使用一些正则表达式函数?

Vin*_*gio 6

JS中的函数与许多函数语言一样是闭包:它们在定义时将环境范围的内容包含在其中,包括db或文件句柄等临时数据.

这不是一个好主意,因为这会因JSON反序列化行为而导致问题,因此您必须检查函数中包含的内容以及自定义的内容.

有关详细信息,另请参阅此SO线程.