檢查型別

你可以使用 is 運算子來驗證某個值是否屬於某種型別:

var sprite:Sprite = new Sprite();

trace(sprite is Sprite); // true
trace(sprite is DisplayObject); // true, Sprite inherits DisplayObject
trace(sprite is IBitmapDrawable); // true, DisplayObject implements IBitmapDrawable
trace(sprite is Number); // false
trace(sprite is Bitmap); // false, Bitmap inherits DisplayObject
                         // but is not inherited by Sprite.

還有一個 instanceof 運算子(不建議使用),與 is 幾乎完全相同,只是在檢查實現的介面和 int / uint 型別時返回 false

as 運算子也可以像 is 運算子一樣使用。如果你使用一些像 FlashDevelop 這樣的智慧 IDE,這將特別有用,它將為你提供顯式物件型別的所有可能屬性的列表。例:

for (var i:int = 0; i < a.length; i++){
    var d:DisplayObject = a[i] as DisplayObject;
    if (!d) continue;
    d.//get hints here
    stage.addChild(d);
}

為了與 is 獲得相同的效果,你會寫(不太方便):

for (var i:int = 0; i < a.length; i++){
    if (a[i] is DisplayObject != true) continue;
    var d:DisplayObject = a[i] as DisplayObject;
    stage.addChild(d);
}

請記住,在使用 as 運算子檢查編碼時,給定值將首先轉換為指定型別,然後檢查該操作的結果是否為 false,因此在使用可能的 false / NaN 值時要小心:

if(false as Boolean) trace("This will not be executed");
if(false as Boolean != null) trace("But this will be");

下表顯示了型別運算子結果的一些基本值和型別。綠色單元格將評估為 true,紅色表示為 false,而 greay 將導致編譯/執行時錯誤。

StackOverflow 文件