ActionScript 3.0基础——数据类型的检验

AS3以前,我们检测数据类型可以用instanceof和typeof运算符,在AS3中新增了is和as运算符。下面就谈谈它们的用法。

package { 
    import flash.display.Sprite; 
    import flash.display.DisplayObject; 
    import flash.events.IEventDispatcher; 
    public class DataTypeCheck extends Sprite 
    { 
        public function DataTypeCheck() 
        { 
            var mySprite:Sprite = new Sprite(); 
            trace(mySprite instanceof Sprite);           //true 
            trace(mySprite instanceof DisplayObject);    //true 
            trace(mySprite instanceof IEventDispatcher); //false 
            trace(mySprite is Sprite);                   //true 
            trace(mySprite is DisplayObject);            //true 
            trace(mySprite is IEventDispatcher);         //true            
            trace(typeof(mySprite));                     //object 
            trace(mySprite as Sprite);                   //[object Sprite] 
            trace(mySprite as DisplayObject);            //[object Sprite] 
            trace(mySprite as IEventDispatcher);         //[object Sprite] 
            trace(DisplayObject(mySprite));              //[object Sprite] 
            trace(mySprite as Number);                   //null 
        } 
    } 
}

说明:

  • instanceof运算符在AS3时代已经过时,它用一个对象是不是该类及其父类的实例,返回一个布尔值。
  • is运算符用来检验一个对象是不是该类及其父类的实例以及与它们有没有实现了给定的接口,返回一个布尔值
  • typeof用于简单数据类型和复杂数据类型的检验。
  • as运算符用于复杂数据类型的检验,检验一个表达式是不是给定的数据类型。但和is运算符不同,as 运算符返回该表达式的值,没有值返回null
  • as运算符最主要用途应该是显示转换复杂数据类型,这一点Adobe似乎在帮助文件中没提及。

发表评论