您可以使用is运算符来验证值是否为某种类型:
var sprite:Sprite = new Sprite(); trace(sprite is Sprite); // 真正 trace(sprite is DisplayObject); // 真正, Sprite inherits DisplayObject trace(sprite is IBitmapDrawable); // 真正, DisplayObject implements IBitmapDrawable trace(sprite is Number); // 假 trace(sprite is Bitmap); // 假, Bitmap inherits DisplayObject // 但不是Sprite继承的。
此外,还有一个instanceof操作者(不建议使用),其工作几乎相同is,除了它返回false对实现的接口时检查和INT / UINT类型。
该as运营商还可以通过使用就像is操作。如果您使用诸如FlashDevelop之类的智能IDE,这将特别有用,它将为您提供显式对象类型的所有可能属性的列表。例:
for (var i:int = 0; i < a.length; i++){ var d:DisplayObject = a[i] as DisplayObject; if (!d) continue; d.//在这里获取提示 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 / NaN值一起使用时要小心:
if(false as Boolean) trace("This will not be executed"); if(false as Boolean != null) trace("But this will be");
下表显示了一些基本值和类型以及类型运算符的结果。绿色单元格将评估为true,红色单元格将评估为false,并且灰色将导致编译/运行时错误。