是否可以在创建函数时创建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()
创建一个函数调用预定义参数,因此您可以在创建函数指针数组时捕获不同的参数。