Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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_Jquery_Function_Loops_Dynamic Function - Fatal编程技术网

Javascript 如何生成动态函数?

Javascript 如何生成动态函数?,javascript,jquery,function,loops,dynamic-function,Javascript,Jquery,Function,Loops,Dynamic Function,我有10个类似的功能: function instagram_ajax(){ return ajaxRequest('search/instagramid', 'instagramid').then( function(res) { var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png"; $('.opti

我有10个类似的功能:

function instagram_ajax(){
    return ajaxRequest('search/instagramid', 'instagramid').then(
        function(res) {
            var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
            $('.option_name_instagramid + td').html("<img src='img/" + imgStatus + "' />")

            optionsRes['instagramid'] = res[1];

        }, function(err){
            $('.option_name_instagramid + td').html("<img src='img/warning.png' />")
        }
    );
}

function googleplus_ajax(){
    return ajaxRequest('search/googleplusid', 'googleplusid').then(
        function(res) {
            var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
            $('.option_name_googleplusid + td').html("<img src='img/" + imgStatus + "' />")

            optionsRes['googleplusid'] = res[1];

        }, function(err){
            $('.option_name_googleplusid + td').html("<img src='img/warning.png' />")
        }
    );
}

.
.
.

现在我想知道,是否有可能动态生成这些数组?我的意思是把一个可变基函数放到一个循环中,然后用这个数组生成所有这些函数?这样的事情可能吗?

制作一个包装器函数

function ajax(str) {
  return function() {
    return ajaxRequest('search/'+str+'id', ''+str+'id').then(
        function(res) {
            var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
            $('.option_name_'+str+'id + td').html("<img src='img/" + imgStatus + "' />")

            optionsRes[str+'id'] = res[1];

        }, function(err){
            $('.option_name_'+str+'id + td').html("<img src='img/warning.png' />")
        }
    );
  }
}

var instagram_ajax = ajax('instagram');
var googleplus_ajax = ajax('googleplus');
函数ajax(str){
返回函数(){
返回ajaxRequest('search/'+str+'id','+str+'id')。然后(
功能(res){
var imgStatus=res[1]。长度>0?“已成功选中\u.png”:“已选中\u noRes.png”;
$('.option_name_'+str+'id+td').html(“”)
选项res[str+'id']=res[1];
},函数(err){
$('.option_name_'+str+'id+td').html(“”)
}
);
}
}
var instagram_ajax=ajax(“instagram”);
var googleplus_ajax=ajax(“googleplus”);
还是你的案子

var parts = ['instagram', 'googleplus', 'linkedin', 'facebook'];

var funcs = {};
for (var i = 0; i < parts.length; i++)
  funcs[parts[i]] = ajax(parts[i]);

// now u do
funcs.instagram()
var parts=['instagram'、'googleplus'、'linkedin'、'facebook'];
var funcs={};
对于(变量i=0;i
制作包装器函数

function ajax(str) {
  return function() {
    return ajaxRequest('search/'+str+'id', ''+str+'id').then(
        function(res) {
            var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
            $('.option_name_'+str+'id + td').html("<img src='img/" + imgStatus + "' />")

            optionsRes[str+'id'] = res[1];

        }, function(err){
            $('.option_name_'+str+'id + td').html("<img src='img/warning.png' />")
        }
    );
  }
}

var instagram_ajax = ajax('instagram');
var googleplus_ajax = ajax('googleplus');
函数ajax(str){
返回函数(){
返回ajaxRequest('search/'+str+'id','+str+'id')。然后(
功能(res){
var imgStatus=res[1]。长度>0?“已成功选中\u.png”:“已选中\u noRes.png”;
$('.option_name_'+str+'id+td').html(“”)
选项res[str+'id']=res[1];
},函数(err){
$('.option_name_'+str+'id+td').html(“”)
}
);
}
}
var instagram_ajax=ajax(“instagram”);
var googleplus_ajax=ajax(“googleplus”);
还是你的案子

var parts = ['instagram', 'googleplus', 'linkedin', 'facebook'];

var funcs = {};
for (var i = 0; i < parts.length; i++)
  funcs[parts[i]] = ajax(parts[i]);

// now u do
funcs.instagram()
var parts=['instagram'、'googleplus'、'linkedin'、'facebook'];
var funcs={};
对于(变量i=0;i
很有可能,只需将变量作为参数传递给函数,并为数组中的每个项创建一个循环,使用不同的参数调用同一个函数。这只是一个更正:传递参数,而不是参数。参数永远不会改变,参数会改变。很有可能,只需将变量作为参数传递给函数,并为数组中的每个项创建一个循环,用不同的参数调用同一个函数。只是一个更正:传递参数,而不是参数。参数永远不会改变,参数会改变。我只是不明白这一行
funcs.instagram(…params)
。那是干什么用的?我只是不懂这行
funcs.instagram(…params)
。那是干什么用的?