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