我不完全理解这个示例中这两种类型转换方法之间的优缺点:
for each(var i:DisplayObject in _display)
{
trace(i as Sprite);
trace(Sprite(i));
}
对此有什么建议吗?我总是像Class()
一样包裹在后一个示例中,但as
有时会更容易阅读。
答案 0 :(得分:6)
根据我的理解,差异是TypeError
。
var o:Object = "test";
trace( o as MovieClip ); // displays: null
trace ( MovieClip ( o ) ); // generates a TypeError
http://archive.darronschall.com/weblog/2006/02/actionscript-3-casting.html
答案 1 :(得分:0)
我总是使用as,因为当你使用Class(引用)时,某些类会有意想不到的结果。例如
var arr:Array = [1, 2, 3];
var arr2:Array = Array(arr);
arr2现在是[[1,2,3]]
当arr和arr2一起定义时,这是相当明显的,但是当arr在其他地方定义而你不知道它是否包含数组时,你可以使用Array(arr)语法获得错误。