繁体   English   中英

在Javascript中动态访问函数参数

[英]access function arguments dynamically in Javascript

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

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对象;

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

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

动态的,您应该能够使用selectedObject.methodToRun()在对象上调用方法。

(但是,现在只能由您提供实际上实现了“ methodToRun”的对象,否则您将收到“对象不支持此方法”错误。)

找到了解决方案:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM