在Javascript中动态访问函数参数

时间:2012-05-22 08:02:02

标签: javascript function dojo

我有一个像这样的dojo定义函数

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?

事先提前

编辑:

再远一点 我可以使用arguments关键字。

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

但我无法使用functionArguments['foo'];

访问foo对象

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用类似接口定义的“methodToRun”函数。

当你说想要动态选择正确的对象时,听起来好像是将对象存储在代码中的某个var中(例如:var selectedObject = foo;)

作为动态,您应该能够使用对象调用该方法 selectedObject.methodToRun();

(但现在由你来提供实际上实现“methodToRun”的对象,否则你会得到“对象不支持这种方法”的错误。)

答案 1 :(得分:0)

找到了解决方案:

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();
            }

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