Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建对javascript函数的动态调用_Javascript - Fatal编程技术网

如何创建对javascript函数的动态调用

如何创建对javascript函数的动态调用,javascript,Javascript,JavaScript问题。今天早上我完全是一片空白 我有四项职能: function create_account1(){ // some stuff } function create_account2(){ // some stuff } function create_account3(){ // some stuff } function create_account4(){ // some stuff } 我现在需要循环一些数字,如果满足条件,调用相应的函数。既然我不

JavaScript问题。今天早上我完全是一片空白

我有四项职能:

function create_account1(){  // some stuff  }
function create_account2(){  // some stuff  }
function create_account3(){  // some stuff  }
function create_account4(){  // some stuff  }
我现在需要循环一些数字,如果满足条件,调用相应的函数。既然我不知道我在循环中是哪个号码,我该怎么做

简单的例子:

for( var i=1; i<=4; i++ ){
  create+i+(); 
}

for(var i=1;i这些函数是否存在于全局上下文中

如果是这样,您可以使用以下方法:

for( var i=1; i<=4; i++ ){
  window["create_account" + i](); 
}

for(var i=1;i这些函数是否存在于全局上下文中

如果是这样,您可以使用以下方法:

for( var i=1; i<=4; i++ ){
  window["create_account" + i](); 
}

for(var i=1;i您不能像这样调用函数。我认为您面临设计问题,正确的方法是这样:

function create_account(accountID) {
    switch(accountID)
    {
        case 1: 
        {
            //account 1 logic.
            break;
        }
        case 2:
        {
            //account 2 logic.
            break;
        }
        etc...
    }
}
你这样称呼它

for( var i=1; i<=4; i++ ){
  create_account(i); 
}

for(var i=1;i您不能像这样调用函数。我认为您面临设计问题,正确的方法是这样:

function create_account(accountID) {
    switch(accountID)
    {
        case 1: 
        {
            //account 1 logic.
            break;
        }
        case 2:
        {
            //account 2 logic.
            break;
        }
        etc...
    }
}
你这样称呼它

for( var i=1; i<=4; i++ ){
  create_account(i); 
}
for(var i=1;i试试这个

 function mainfunc (){
    window[Array.prototype.shift.call(arguments)].apply(null, arguments);
 }
您传递的第一个参数应该是要调用的函数名,其余所有参数都将传递给被调用的函数

mainfunc('create_account1');

如果需要为
create\u account2
传递名称,请尝试此操作

 function mainfunc (){
    window[Array.prototype.shift.call(arguments)].apply(null, arguments);
 }
您传递的第一个参数应该是要调用的函数名,其余所有参数都将传递给被调用的函数

mainfunc('create_account1');

如果您需要为
create_account2

传递名称,请执行以下操作:

 for( var i=1; i<=4; i++ ){
  var fnName = 'create_account' + i ;
  //create+i+();
  window[fnName]();
}
function create_account1(){

  alert('Hello');

}
对于(var i=1;i请按照以下方式执行:

 for( var i=1; i<=4; i++ ){
  var fnName = 'create_account' + i ;
  //create+i+();
  window[fnName]();
}
function create_account1(){

  alert('Hello');

}


for(var i=1;i
window['create\u account'+i]()
但是在您的系统中使用不同的方法会更好对不起,输入错误-在我的for循环中,调用应该是:create\u acct+i+();
window['create\u account'+i]()
但最好在系统中使用不同的方法抱歉,输入错误-在我的for循环中,调用应为:create_acct+i+();这没有回答问题,但我认为OP可能存在设计问题!我没有否决,但正如我已经说过的,这没有回答问题!他想要的是动态函数调用,而不是一些预定义的开关情况。“你不能像这样调用函数”我认为这个社区的目的是提供最好的解决方案,如果有人因为试图做出奇怪的事情而陷入困境,那么一个正确的方式去做他试图实现的事情可能会更好。是的,但是你的解决方案也不是正确的方式。这些数字没有意义,最好是创建常量。这不是答案他提出了问题,但我认为OP可能存在设计问题!我没有否决,但正如我已经说过的,这并没有回答问题!他想要的是动态函数调用,而不是一些预定义的开关情况。“你不能像这样调用函数”我认为这个社区的目的是提供最好的解决方案,如果有人因为试图做出奇怪的事情而陷入困境,那么用正确的方式去做他试图实现的事情可能会更好。是的,但是你的解决方案也不是正确的方式。这些数字没有意义,最好是创建常量。谢谢你的“chumkiu”还有“ComFreek”。现场直播!效果很好。感谢“chumkiu”和“ComFreek”。现场直播!效果很好。它在@Tomzan工作,我在浏览器中查看了它,提醒(“你好”);这只是一个例子:::请在控制台中进行代码粘贴,然后按enter键,然后您就会看到此函数工作正常。您可以在函数中正确地执行任何操作,谢谢您将其更改为window['name'](我不能不同意。):)其工作@Tomzan,我在浏览器中检查过,提醒('Hello'));这只是一个例子:::请在控制台中粘贴代码,然后按enter键,然后您就会看到此函数工作正常。您可以在函数中正确地执行任何操作,谢谢您将其更改为window['name'](我不能不同意…)