我已经构建了一个GUI,该GUI传递了一个较长的JS对象作为动画插件的设置。一项设置允许用户在动画完成后调用功能。不幸的是,它必须作为字符串传递给JS对象。

... [ 'functioncall()' ] ......

在我的动画回调中,我正在检索此字符串并尝试将其作为函数运行。

第一次尝试效果很好,但使用评估...
eval( OS.path_jscall[index].path_jscall[0][i] )

我设置了一个更喜欢的方法,如下所示:
var HookFunction=new Function( OS.path_jscall[index].path_jscall[0][i] );
HookFunction();

这两个示例都完美地调用了functioncall()函数。我不确定如何将(this)传递给functioncall()...
functioncall(obj){ console.log(obj); };

一切都一直指向窗口。有任何想法吗?谢谢!

最佳答案

假设HookFunction是名称,则可以执行call()apply()

HookFunction.call(this,arg1,arg2,...,argN);

//or

HookFunction.apply(this,[arg1,arg2,...,argN]);

2的基本区别是call()接收您的“this”和它后面的参数列表,而apply()接收您的“this”和参数数组

10-01 08:47