ActionScript3.0中獲取變數型別的方法
阿新 • • 發佈:2019-02-06
AS3中一共有以下六種獲取變數型別的方法:
- typeof
- instanceof
- getQualifiedClassName
- getQualifiedSuperclassName
- is
- as
typeof運算子用來返回基元資料的型別(所謂基元資料型別是指:int,uint,Boolean,Number,String除此以外全部都是複雜資料型別)。注意,使用typeof返回複雜資料型別時將始終得到“Object”。
typeof的使用方法如下例所示:
var size:int=10; var color:uint=0x990000; var flag:Boolean=false; var num:Number=.5; var name:String=”My Name is HuLin”; var arr:Array=[1,2,3]; var obj:Object=new Object(); var mc:MovieClip=new MovieClip(); var shape:Shape=new Shape(); trace(typeof(size)); //int trace(typeof(color)); //uint trace(typeof(flag)); //Boolea trace(typeof(num)); //Number trace(typeof(name)); //String trace(typeof(arr)); //Object trace(typeof(obj)); //Object trace(typeof(mc)); //Object trace(typeof(shape)); //Object
instanceof是AS3以前的ActionScript版本(AS2或AS1)中用來判斷變數型別的運算子。在AS3中依然可以使用,但是建議不要再用,因為在它可能無法正確判斷AS3中新增的資料型別。例如,有如下語句:
var num:int=5;
trace(num instanceof int); //false
顯然,這是錯誤的。在AS3中應當使用is來代替它。
getQualifiedClassName運算子用來返回變數所屬的類的類名,用法如下:
var shap:Shape=new Shape(); trace(getQualifiedClassName(shap)); //flash.display::Shape
注意,使用getQualifiedClassName只能返物件的直接歸屬類的類名,而不能獲取整條繼承鏈。
getQualifiedSuperclassName運算子用來返回物件所屬類的父類的名稱,用法如下:
var shap:Shape=new Shape();
trace(getQualifiedSuperclassName(shap));// flash.display::DisplayObject
is運算子,AS強力推薦之法寶。它用來驗證指定變數是否屬於指定型別,是則返回true,否則返回false。用法如下:
var shap:Shape=new Shape(); trace(shap is Shape); //true var num:int=5; trace(num is Array); //false
as運算子也是AS3中新增的內容。它跟is運算子的用法類似,但是它不像is一樣返回true或flash,而是返回物件本身(型別匹配時會將物件轉換為匹配型別)或null(型別不匹配時)。用法如下:
var shap:Shape=new Shape();
trace(shap as Shape); //[object Shape]
trace(shap as MovieClip);// null