1. 程式人生 > >ActionScript3.0中獲取變數型別的方法

ActionScript3.0中獲取變數型別的方法

AS3中一共有以下六種獲取變數型別的方法:

  • typeof
  • instanceof
  • getQualifiedClassName
  • getQualifiedSuperclassName
  • is
  • as

typeof運算子用來返回基元資料的型別(所謂基元資料型別是指:intuintBooleanNumberString除此以外全部都是複雜資料型別)。注意,使用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

instanceofAS3以前的ActionScript版本(AS2AS1)中用來判斷變數型別的運算子。在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一樣返回trueflash,而是返回物件本身(型別匹配時會將物件轉換為匹配型別)null(型別不匹配時)。用法如下:

var shap:Shape=new Shape();
trace(shap as Shape);   //[object Shape]
trace(shap as MovieClip);// null