【发布时间】:2014-01-20 03:23:04
【问题描述】:
首先,我使用一些测试(例如:“alert("Hello")")创建了一个函数数组,并使用 Function(text) 方法将该文本转换为匿名函数。例如
someArray[0] = Function('alert("Hello")');
然后我可以像这样运行这个函数:
someArray[0]();
这很好用,但是我需要能够将这个数组存储在本地存储中,以前我一直在使用 JSOn.Stringify 来存储数组,但是似乎一旦我存储了数组并从存储中检索它,我就无法再运行了函数。
我的问题是如何存储函数数组以便稍后检索和运行它们?
【问题讨论】:
-
为什么要将字符串转换为函数?这些字符串是从哪里来的?您可以将这些字符串存储在本地存储中的对象中,然后在取回它们时再次调用
new Function?不过,我建议创建命名函数并将其名称保存在您的对象中。 -
根据对 [a similar StackOverflow question][1] 的回复,JSON 无法存储函数。 [1]:stackoverflow.com/questions/8328119/…
-
这通常是个坏主意,而且会造成安全漏洞。
-
您试图实现什么导致您将函数存储为字符串?我的幼稚建议是,如果可以找到另一种方法,但该方法没有利用具有固有安全风险的方法,则不要以这种方式执行此操作。
-
我正在用 JavaScript 编写一个模拟器,您可以在其中设计自己的 CPU,这是您可以为您的 CPU 创建指令集的方法,正如其他人提到的,我将它们存储为字符串并在运行时使用 eval。由于根本不存储任何个人身份信息,因此不再需要担心安全问题。
标签: javascript function web local-storage