代码之家  ›  专栏  ›  技术社区  ›  fastcall

在actionscript 2.0中按程序访问函数的参数列表

  •  2
  • fastcall  · 技术社区  · 15 年前

    我已经可以通过以下操作来获取类中的所有函数。

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

    如果是这样,我应该在椭圆处填写什么?

    1 回复  |  直到 15 年前
        1
  •  2
  •   fenomas    15 年前

    诺西里我想给你一个解决方法,但是没有办法像这样反省函数的签名。

    当函数实际上是 打电话 ,在其中,您可以浏览参数,而不考虑签名,方法是查看 arguments 对象。如:

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

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