| 首先,AS3里function的参数可以有默认值了。 public function TestFunc(){myFunc();
 }
 private function myFunc(para1:int=10,para2:String="str"):void{
 trace(para1 + " , " + para2);    //10 , str
 }
 AS3里不能给出多余的参数, public function TestFunc(){myFunc(2,"3",4);
 }
 private function myFunc(para1:int,para2:String):void{
 trace(para1 + " , " + para2);
 }
 编译器给出参数不匹配的错误:ArgumentError: Error #1063: Argument count mismatch on TestFunc/TestFunc::myFunc(). Expected 2, got 3. 这样以前那种用 arguments 拿到不固定参数的方法就不能用了。AS3给出一个新的关键字:… (rest) parameter public function TestFunc(){myFunc(2,"3",4,"5",true);
 }
 private function myFunc(para1:int,para2:String,... more):void{
 trace(para1 + " , " + para2);    //2 , 3
 trace(more);    //4,5,true
 }
 在固定的参数后面跟一个 “…” 和一个表达式(如例子中的“more”),“…” 后面所有的参数将被放到以该表达式命名的数组中。注意 “…” 必须是最后一个参数。 如果使用 “…” arguments 就不可用了,自然也就拿不到 arguments.callee(对当前正在执行的函数的引用),所以在确定不使用 callee 的情况下才能用 “…”。 提到 arguments ,arguments.caller 已经被 “remove” 了。要想拿到 caller 需要把调用函数的 callee 作为参数传给被调用函数。官方的例子: 
 
 package {import flash.display.Sprite;
 
 public class ArgumentsExample extends Sprite {
 private var count:int = 1;
 
 public function ArgumentsExample() {
 firstFunction(true);
 }
 
 public function firstFunction(callSecond:Boolean) {
 trace(count + ": firstFunction");
 if(callSecond) {
 secondFunction(arguments.callee);
 }
 else {
 trace("CALLS STOPPED");
 }
 }
 
 public function secondFunction(caller:Function) {
 trace(count + ": secondFunction\n");
 count++;
 caller(false);
 }
 }
 }
 出处:蓝色理想
责任编辑:moby
 上一页 event 下一页 SimpleButton ◎进入论坛Flash专栏版块参加讨论
	      |