javascript - 避免 EVAL 并将 THIS 传递给函数?

标签 javascript jquery function call eval

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

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

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

第一次尝试完美,但使用了 eval...

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]);

两者的基本区别是 call() 接收你的“this”和它后面的参数枚举列表,而 apply() 接收你的“this” "和一组参数

关于javascript - 避免 EVAL 并将 THIS 传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307745/

相关文章:

javascript - 根据 anchor 击更改 InnerHTML

JavaScript Array、Stack、Queue——这种特定 API 设计背后的动机是什么?

javascript - CoffeeScript 类中的“This”关键字

c++ - C++ 模板函数可以选择成员变量吗?

r - 在 R 函数中使用 summarize() 进行分组汇总时保留原始变量名

javascript - 如何让我的 javascript 函数随机选择一个函数(幻灯片),执行它,然后重复?

javascript - JQuery找到距离当前时间最近的元素值然后添加类

javascript - 如何触发任何箭头键

Jquery Iframe 弹出窗口

jquery - 如何使用 jQuery 获取所选文本的字符长度?