AS3知道函数需要多少个参数

时间:2011-11-24 12:12:59

标签: flash actionscript-3 function introspection

有没有办法知道Function的一个实例可以在Flash中使用多少个参数?知道这些参数是否是可选的也是非常有用的。

例如:

public function foo() : void                               //would have 0 arguments
public function bar(arg1 : Boolean, arg2 : int) : void     //would have 2 arguments
public function jad(arg1 : Boolean, arg2 : int = 0) : void //would have 2 arguments with 1 being optional

由于

1 个答案:

答案 0 :(得分:13)

是的:使用Function.length属性。 我刚检查了docs:它似乎没有在那里被提及。

trace(foo.length); //0
trace(bar.length); //2
trace(jad.length); //2

注意函数名后面没有大括号()。您需要Function对象的引用;添加大括号将执行该功能。

我不知道如何确定其中一个参数是可选的。

修改

...rest parameters怎么办?

function foo(...rest) {}
function bar(parameter0, parameter1, ...rest) {}

trace(foo.length); //0
trace(bar.length); //2

这是有道理的,因为无法知道将传递多少个参数。 请注意,在函数体中,您可以确切地知道传递了多少个参数,如下所示:

function foo(...rest) {
    trace(rest.length);
}

感谢@felipemaia指出这一点。