Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串(原来是函数)转换回Javascript中的函数_Javascript_Jquery - Fatal编程技术网

将字符串(原来是函数)转换回Javascript中的函数

将字符串(原来是函数)转换回Javascript中的函数,javascript,jquery,Javascript,Jquery,我把这个函数作为字符串放在下面。如何将其转换回函数?我正在从JQuery事件中提取事件处理程序,我希望将它们存储为字符串,然后将它们转换回来,因为它们将保存在mySQL中 function () { if (!GActiveClick) { return; } SaveProduct(); } : 新函数([arg1[,arg2[,…argN]],]functionBody) 参数 arg1,arg2。。。argN 函数用作形式参数名称的名称。每个字符

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

function () {

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

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

参数

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

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


更新:

这一切都是一种非常糟糕的做法

您应该有一个通用函数来获取构建所需的参数。唯一改变的是参数。将这些参数存储在数据库中。

Javascript为函数提供了新的关键字

var foo = new Function("arg", ... , "<implementation string>");
var foo=新函数(“arg”,…,”;
看这里的例子。。。

在使用
新函数()时使用
返回
,并执行它,如下所示

new Function('return ' + fn_string)();
例如:

函数hackerrall(a,b){
var结果=a*b
返回结果
}
班犬{
方法1(){
返回123123*342343
}
}
var fn_string=hackerAll.toString()
var back_to_fn=new Function(`return${fn_string}`)(//这将使用name、params和all还原函数,即使es7类也可以工作
var class_string=Doggy.toString()
var back_to_class=新函数(`return${class_string}`)()
console.log('fn as it',hackerAll)
console.log('fn string',fn_string)
console.log('restored fn',back_to_fn)

log('restored class',back_to_class)
为什么要这样做?eval()您可以使用
eval()
在字符串中执行Javascript,但这通常被认为是一种非常糟糕的做法。我不明白为什么要将JQuery事件函数存储在MySql表中。也许你应该重新考虑你想做什么。@js1568。它不必是
eval
。我的计划是捕获页面的状态,然后保存这些信息,然后在以后还原。@Robert。那么,这是一种不好的方式…谢谢你的回答。我只是在寻找一种快速保存此信息的方法,但如果这是一种很糟糕的做法,我会确保这样做。我的答案不需要在任何数据库中存储参数
new Function('return ' + fn_string)();