Javascript 包含反模式函数的对象中参数过多?

Javascript 包含反模式函数的对象中参数过多?,javascript,node.js,design-patterns,anti-patterns,Javascript,Node.js,Design Patterns,Anti Patterns,在我的程序中,用户提供了一个数组,该数组定义了哪些函数在循环中运行。我有一堆变量,必须传递到每个函数中。由于参数列表出现在许多地方,该列表似乎一直在增长,并且越来越难以维护。下面是一些伪代码: var fn_defs = { test_fn_1: function(test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, cb){ //...do stuff }, test_fn_2: func

在我的程序中,用户提供了一个数组,该数组定义了哪些函数在循环中运行。我有一堆变量,必须传递到每个函数中。由于参数列表出现在许多地方,该列表似乎一直在增长,并且越来越难以维护。下面是一些伪代码:

var fn_defs = {
    test_fn_1: function(test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, cb){
        //...do stuff
    },
    test_fn_2: function(test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, cb){
        //...do stuff
    },
    etc...
};

async.eachSeries(user_defined_list_of_function_names, function(fn, async_cb){
    var test_var_1, test_var_2, test_var_3, test_var_4, test_var_5;
    fn_defs[user_defined_list_of_function_names](test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, function(result){
        async_cb();
    }, function(err){
        //end
    });
});
正在寻找更好的方法来实现这一点。我想我可以创建全局变量,但我认为这也是一种反模式。

这种模式(函数的许多参数)在javascript中非常常见。流行javascript库中的许多函数都需要很多参数。它们将这些参数包含在一个对象中,该对象将所有参数收集在一个参数中,并简化了可选参数的给定

例如,它需要11个参数。所有参数都封装在一个对象中。传递缺少参数的对象将使用此参数默认值

function dostuff(args){
    var def_args = {step: 1, state: 'PENDING', vas: function(){}};
    args = merge_options(def_args, args);

}

如果您使用的是内部接口,那么您可以使用DTO()。总之,您可以创建一个简单的对象来对所有变量进行分组。

传递一个带有属性的对象。哪种“此模式”的算术数大于5?“将这些参数包含在对象中”是什么意思?