在Javascript中动态访问函数参数

在Javascript中动态访问函数参数,javascript,function,dojo,Javascript,Function,Dojo,我有一个像这样的dojodefine函数 define([ // some param ]),function(foo, bar, baz, fooz, ...){ return{ // some custom code } } 我想动态访问我的函数args(foo,bar,…) 我知道我可以把它包装成var foo : foo 并使用 this[objectToCall].methodToRun(); 在本例中,调用应该是 this.run('fo

我有一个像这样的dojodefine函数

define([
    // some param
]),function(foo, bar, baz, fooz, ...){
    return{
        // some custom code
    }
}
我想动态访问我的函数args(foo,bar,…)

我知道我可以把它包装成var

foo : foo
并使用

this[objectToCall].methodToRun();
在本例中,调用应该是

this.run('foo');

function run(objectToCall){ // foo    
    this[objectToCall].methodToRun(); // refer to foo
}
有没有一种方法可以实现这一点而不用将其包装到var中

提前thx

编辑:

再进一步 我可以使用
参数
关键字

function(foo, bar, baz, fooz, ...){
    var functionArguments = arguments;
    return{
        // some custom code
    }
}

但是我无法使用
functionArguments['foo']
访问foo对象

您似乎试图使用“methodToRun”函数,有点像接口定义

当您说希望动态选择正确的对象时,听起来好像您正在代码中某个地方的某个var中存储该对象(例如:var selectedObject=foo;)

由于是动态的,您应该能够使用 选择Object.methodToRun()

(但现在取决于您是否只提供实际上实现了“methodToRun”的对象,否则将出现“object不支持此方法”错误。)

找到了解决方案:

function(method){
    var len = functionArguments.length;
    for(var i = 0; i < len; i ++){
        if(typeof functionArguments[i] === "object")
            if(functionArguments[i].name == method)
                functionArguments[i].test();
            }
函数(方法){
var len=functionArguments.length;
对于(变量i=0;i

并在我的对象的定义中添加了一个名称参数

这个['objectToCall'].methodToRun();
的哪个部分是
foo
?你能解释一下这个['objectToCall'].methodToRun();部分吗?我不能把这和你问题的前半部分联系起来:(当然,我几乎没有对象(foo,bar,…)wich实现了例如methodToRun()。我想动态选择正确的对象,并在其上运行methodToRun()。如果选择foo,则此['objectToCall']。methodToRun应为此['foo']。methodToRun()。我已经通过将对象包装到var中实现了这一点,但如果可能的话,我希望不进行包装。您可以使用
functionArguments[0]
?是的,它将输出此对象foo:function(){proto:object