首先,我使用一些测试创建一个函数数组(如:“alert(”Hello“)”)并使用Function(text)方法将该文本转换为匿名函数。 e.g。
someArray[0] = Function('alert("Hello")');
然后我可以像这样运行这个函数:
someArray[0]();
这很好用,但是我需要能够将这个数组存储在本地存储中,之前我一直在使用JSOn.Stringify来存储数组,但是一旦我存储了数组并从存储中检索它我就无法再运行了功能。
我的问题是如何存储函数数组以便我可以检索它们并在以后运行它们?
答案 0 :(得分:2)
JSON不知道函数, 你最好的猜测就是存储 一串字符串,当你 想要使用它们将它们传递给函数 作为论点的对象。
答案 1 :(得分:0)
您可以将函数base64编码为字符串。将其保存在json文件中。将json文件加载到您的页面/应用程序中。 base64解码。
然后eval()注册你的新功能。
//load json data from file
var jsonData = {};
//Create string representation of function
var s = "function " + atob(jsonData.func);
//"Register" the function
eval(s);
//Call the function
//'test' is the name of the function in jsonData.func
test();
OR
//load json data from file
var jsonData = {};
//create function from base64 decode
var fn = Function(atob(jsonData.func));
//test
fn();
**当然,每个示例都需要对函数进行不同的格式化。
Is there a way to create a function from a string with javascript?