在Javascript中将字符串(是一个函数)转换回函数

我在下面将此函数作为字符串。 我如何将其转换回函数? 我从JQuery事件中提取事件处理程序,我想将它们存储为字符串,然后将它们转换回来,因为它们将保存在mySQL中

function () { if (!GActiveClick) { return; } SaveProduct(); } 

 var func = new Function(theFunctionString); func(); 

MDN

新函数([arg1 [,arg2 [,… argN]],] functionBody)

参数

arg1,arg2,… argN
函数使用的名称作为正式参数名称。 每个必须是一个字符串,对应于有效的JavaScript标识符或用逗号分隔的此类字符串列表; 例如“x”,“theValue”或“a,b”。

函数体
包含包含函数定义的JavaScript语句的字符串。


更新:

这一切都是非常糟糕的做法!
你应该有一个generics函数来获取构建你想要的参数。 唯一改变的是参数。 将这些参数存储在您拥有的数据库中。

Javascript为函数提供new-keyword

 var foo = new Function("arg", ... , ""); 

看这里举例…… http://www.permadi.com/tutorial/jsFunc/

使用new Function()时使用return并执行它,就像这样

 new Function('return ' + fn_string)(); 

例:

 function hackerAll(a, b) { var result = a*b return result } class Doggy{ method1(){ return 123123*342343 } } var fn_string = hackerAll.toString() var back_to_fn = new Function(`return ${fn_string}`)() //This restore the function with name, params and all, even es7 class works var class_string = Doggy.toString() var back_to_class = new Function(`return ${class_string}`)() console.log('fn as it', hackerAll) console.log('fn string', fn_string) console.log('restored fn', back_to_fn) console.log('restored class', back_to_class)