按程序访问函数';actionscript 2.0中的s参数列表

按程序访问函数';actionscript 2.0中的s参数列表,actionscript,actionscript-2,Actionscript,Actionscript 2,通过执行以下操作,我已经可以获得类中的所有函数 for (var member in obj) { if (obj[member] instanceof Function) { var f:Function = obj[member]; ... } } 有没有办法在actionscript中获取函数的参数列表?例如,我可以写一个函数来做这样的事情吗 function getFunctionArguments (f:Function) : Arra

通过执行以下操作,我已经可以获得类中的所有函数

for (var member in obj) {
    if (obj[member] instanceof Function) {
        var f:Function = obj[member];
        ...
    }
}
有没有办法在actionscript中获取函数的参数列表?例如,我可以写一个函数来做这样的事情吗

function getFunctionArguments (f:Function) : Array {
    var argumentArray:Array = new Array();
    for (...) {
        ...
        argumentArray.push({ name:<argumentName>, type:<argument type> });
    }
    return argumentArray;
}
function-getFunctionArguments(f:function):数组{
var argumentArray:Array=new Array();
对于(…){
...
argumentArray.push({name:,type:});
}
返回参数数组;
}

如果是这样,我应该在省略号处填写什么?

Nosirree。我想给你一个解决办法,但是没有办法像这样内省函数的签名

您可以做的是,当函数实际被调用时,在函数内部,您可以通过查看
arguments
对象浏览参数,而不考虑签名。例如:

function doSomething() {
    if (arguments.length > 0) {
         if (typeof arguments[0] == "string") {
             ....
         }
    }
}

等等。但即使这样,也无法找到函数签名中参数的名称(即使签名中没有参数,这也可以正常工作,如上所述)。

这是一件非常有用的事情,但我的动机是编写一些基础结构,使我的类可以通过调试代码进行检查,因此,在进入功能体之前,需要做一些事情。如果其他人有更聪明的技巧可以贡献的话,我会把问题留待一会儿,但看起来你是对的。是的,我猜到了原因,我只是在劝诫。但是,您所寻找的绝对不可能,AS3中也不可能。唯一可能的方法是检查SWF本身的二进制内容(这必须在flash之外完成),即使这样,我也不能100%确定函数参数的名称是否在字符串表中。