gpt4 book ai didi

Javascript:有没有办法在没有 eval() 的情况下使用字符串作为回调?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:09 26 4
gpt4 key购买 nike

所以我需要在我的一个函数中进行回调,但是由于整个程序的工作方式,我需要以字符串的形式传递回调函数名称而不是函数本身。

例如:

function doThings(callback){
alert('hello');
eval(callback + '();');
}

function test(){
alert('world!');
}

var func = 'test';

doThings(func);

简而言之,我试图动态更改使用哪个函数,我必须使用字符串来表示回调函数而不是实际的函数引用。

我一直在阅读 eval is evil - 有没有办法不用 eval() 来做到这一点?

编辑:我没有能力预先列出对象中的函数。我还需要将数组作为单独的参数传递给此函数,并且由于某些原因 .apply()window[callback]() 相处得不好/p>

最佳答案

您可以通过这种方式做到这一点。

function doThings(callback){
alert('hello');
window[callback]();
}

function test(){
alert('world!');
}

var func = 'test';

doThings(func);

或者您可以在字符串中传递完整的函数并使用 Function 构造函数。

function doThings(callback){
alert('hello');
(new Function('return '+callback)())();
}

function test(){
alert('world!');
}

var func = test.toString();

doThings(func);

关于Javascript:有没有办法在没有 eval() 的情况下使用字符串作为回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377240/

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