/** * 代理函数对象 * */ var kingdaFun:Function; var sex:String = "male"; if(sex=="male") kingdaFun = maleFunc; else kingdaFun = femaleFunc; kingdaFun(); function maleFunc():void{ trace("i'm male"); } function femaleFunc():void{ trace("i'm female"); } /** * 利用函数返回函数 * */ chooseFunBy("A")("A func has one parameter."); chooseFunBy("B")("B func has two parameter","No2 parameter:"); chooseFunBy("wu lala")("I choose A function"); var withobj:Object = new Object(); var myobj:Object = {name:"gaoxin",hobby:"pcgame"}; chooseFunBy(withobj)(myobj); function chooseFunBy(input:*):Function{ if(!(input is String)){ return objectFunc; } switch(input){ case "A": return aFunc; break; case "B": return bFunc; break; default: return kingdaFunc; } } function aFunc(ns:String):void{ trace("aFunc():"+ns); } function bFunc(ns:String,np:String):void{ trace("bFunc():"+ns+"another,"+np); } function kingdaFunc(...rest):void{ trace("Welcome to KingdaFunc"); } function objectFunc(kingdaObj:Object):void{ trace("objectFunc():"); for(var i:Object in kingdaObj) { trace(i+":"+kingdaObj[i]); } }