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

Flash AS3知道一个函数需要多少个参数,flash,actionscript-3,function,introspection,Flash,Actionscript 3,Function,Introspection,有没有办法知道函数实例在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 : Bool

有没有办法知道函数实例在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

谢谢

是的,有:使用Function.length属性。 我只是检查了一下:不过似乎没有提到

trace(foo.length); //0
trace(bar.length); //2
trace(jad.length); //2
请注意,函数名后面没有大括号()。您需要函数对象的引用;添加大括号将执行该函数

不过,我不知道有什么方法可以确定其中一个论点是可选的

编辑

那怎么办

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

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

感谢@felipemaia指出这一点。

函数foo(…args)的行为会是什么?显然,无论您是否实际传入参数,它都返回0。我将编辑我的答案。谢谢你指出这一点。否决这一答案的人能否澄清他认为这有什么问题?也忍不住注意到,几乎同时被否决了…+1。哇!以前从没见过这个。是否是AS2中的Object.length潜入AS3:)?
function foo(...rest) {
    trace(rest.length);
}