我试图按照我发布的相同示例来调用此函数。所以问题是我用来调用函数的方法不起作用......我需要类似的东西因为我将通过监听事件调用这些函数。有人知道马上去做吗?
THX。
//variables
var ta = 3213;
var da = 44;
var s = [];
//Create string representation of function
s[1] = "function test0(){ alert(" + da + "); }";
s[0] = "function test1(){ alert(" + ta +"); }";
//"Register" the function
for(i=0; i< s.length; i++){
eval(s[i]);
}
// calling the function
this["test"+1];
答案 0 :(得分:1)
通常我们应该避免使用eval。您可以尝试不使用eval并使用更简单的代码:
x1 <- c(4,17,25)
s_function <- function(x){
z <- 0
for( i in x ) {
z <- z + i
}
return(z)}
s_function(x1)
或者代码中的简单操作:
//variables
var ta = 3213;
var da = 44;
var s = [];
//Create string representation of function
s[1] = function test0(){ alert(" + da + "); };
s[0] = function test1(){ alert(" + ta +"); };
s.forEach((fun) => { this[fun.name] = fun;});
// calling the function
this["test"+1]();
编辑:
如果您正在使用字符串和eval只是因为您将函数名称作为字符串,而是可以创建一个对象:
this["test"+1]();
答案 1 :(得分:0)
最后用();
调用它
//variables
var ta = 3213;
var da = 44;
var s = [];
//Create string representation of function
s[1] = "function test0(){ alert(" + da + "); }";
s[0] = "function test1(){ alert(" + ta +"); }";
//"Register" the function
for(i=0; i< s.length; i++){
eval(s[i]);
}
// calling the function
this["test"+1]();
&#13;
答案 2 :(得分:0)
您可以使用Function对象创建一个函数。
const data = "test";
const func1 = new Function("alert("+data+")");
func1(); // alert shows "test"
您可以添加参数
const data = "test";
const func1 = new Function("arg1","alert(arg1)");
func1("Test argument"); // alert shows "Test argument"
您可以创建命名的函数列表
const myFunctionList = {};
function createFunction(name,funcBody){
myFunctionList[name] = new Function(funcBody);
}
createFunction("test1","alert('test function');");
myFunctionList.test1(); // alert shows 'test function'
// or
myFunctionList["test1"]();
答案 3 :(得分:0)
试试这个:
let dynamic_func_name = 'alert';
let para_1 = 'Hello';
(new Function(`${dynamic_func_name}('${para_1}')`))()
答案 4 :(得分:0)
另一种可能更简洁的方法:
var TestClass = function() {
this.test1 = function() {};
this.test2 = function() {};
this.test3 = function() {};
...
this.testN = function() {};
}
var test = new TestClass();
要调用名为“test1”的方法,您只需执行以下操作:
test['test1']();
等等。这是有效的,因为可以通过数组表示法访问对象的属性。