是否可以在创建函数时创建for循环?

问题描述:

是否有可能创建for循环创建函数(等)?只是为了减少硬编码,因为我在数组中有很多值。我在这里我的代码,它不起作用。是否可以在创建函数时创建for循环?

var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"]; 
 

 
for (var i = 0; i < obj.length; i++) { 
 
    function obj[i]() 
 
    { 
 
    var data = {}; 
 
      $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
 
\t \t \t \t \t url: '/legone/survey/'+obj[i]+'', \t \t \t \t \t \t 
 
        success: function(data) { 
 
         } 
 
        }); 
 
\t alert("Sucessful backup on "+obj[i]+"); 
 
    } 
 
}

从上面的代码中,我只是想插入在obj中的数组的值[I]感谢

我不知道你在想什么在这里实现,但如果你想创建一个后来调用的函数列表,这段代码可能会帮助你开始:

var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"]; 
 

 
var functions = obj.map(function(key) { 
 
    return function(data) { 
 
    $.ajax({ 
 
     type: 'POST', 
 
     data: JSON.stringify(data), 
 
     contentType: 'application/json', 
 
     url: '/legone/survey/'+key+'', 
 
     success: function(response) { 
 
     data[key] = response 
 
     } 
 
    }); 
 
    alert("Sucessful backup on "+obj[i]+"); 
 
    } 
 
} 
 

 
var data = {}; 
 
functions.forEach(function(f) { 
 
    f(data); 
 
});

如果这不是你想要的,请评论:)

这可能是做你想做的事情的一种方式:

function doThing(message) 
{ 
    var data = {}; 
    $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
       url: '/legone/survey/'+message+'',      
       success: function(data) { 
        } 
       }); 
    alert("Successful backup on "+message+"."); 
} 

var obj=[doThing.bind(null, "backupF31"), doThing.bind(null, "backupF32"), 
     doThing.bind(null, "backupF33"), doThing.bind(null, "backupF34"), 
     doThing.bind(null, "backupF35")]; 

for (var thisObj of obj) { 
    thisObj(); 
} 

bind()创建一个函数调用预定义参数,因此您可以在创建函数指针数组时捕获不同的参数。