gpt4 book ai didi

javascript - 如何在javascript中将字符串转换为函数?

转载 作者:行者123 更新时间:2023-11-29 19:14:49 25 4
gpt4 key购买 nike

我使用 stringify 将函数转换为字符串并存储到数据库中。但是如何将这个字符串作为函数添加到变量中

假设我得到的字符串就像我在 A 中显示的那样

var A = "function aF() {\n    console.log(\'change1\');\n}" 

我想像这样向对象键添加 aF 函数

{handle: A }

但我得到了这个结果

{ handle: 'function aF() {\n    console.log(\'change1\');\n }' }

我想要这个

{handle:[function: aF]} or {handle:[function]}

因为变量A是typeof string。有没有什么办法可以把A转成函数,然后存入handle key。

最佳答案

您可以使用 Function constructor 创建一个函数。

例如。

var A = "function aF() {\n    console.log(\'change1\');\n}" ;
var functionStr = A.substring(A.indexOf("{")+1, A.lastIndexOf("}"));
new Function(functionStr)();

注意:

通过此方法使用字符串创建function 对象与eval() 一样有风险。除非您确定不涉及用户输入,否则不应这样做。如果用户输入用于制作 function 字符串,则函数不被认为是安全的,因为用户可能会绕过身份验证和授权进行操作,因为系统无法控制(验证)它们。

what if function aF have some parameter

例如,您需要存储对函数对象的引用并使用参数调用它

var A = "function aF() {\n    console.log(\'change1\');\n}" ;
var functionStr = A.substring(A.indexOf("{")+1, A.lastIndexOf("}"));
var functionObj = new Function(functionStr);

现在用参数调用这个函数,例如

functionObj ( args );

或使用 call

functionObj.call( this, args );//this is the context you want to bind to this funciton.

或使用 apply

functionObj.apply( this, args );//this is the context you want to bind to this funciton.

关于javascript - 如何在javascript中将字符串转换为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36180916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com