В этой дискуссии стоит отметить пару моментов.
Существует существенное различие в том, как эти две функции, Class () будет пытаться привести объект к указанному классу, но в случае неудачи (иногда зависит от типа данных) выдает ошибку времени выполнения. С другой стороны, использование объекта в качестве класса будет в первую очередь выполнять проверку типа, и если указанный объект не может быть приведен к указанному классу, вместо него возвращается нулевое значение.
Это очень важное различие и полезный инструмент в разработке. Это позволяет нам делать следующее:
var o:MyClass = myArray[i] as MyClass;
if(o)
{
//do stuff
}
Я думаю, что полезность этого довольно очевидна.
«as» также более соответствует остальному языку (т. Е. «MyObject is MyClass»).
Метод MyClass () имеет дополнительные преимущества при работе с простыми типами данных (int, Number, uint, string). Некоторые примеры этого:
var s:String = "89567";
var s2:String = "89 cat";
var n:Number = 1.9897;
var i:int = int(s); // i is = 89567, cast works
var i2:int = int(s2); //Can't convert so i2 is set to 0
var i3:int = int(n); // i = 1
var n2:Number = Number(s2); // fails, n2 = NaN
//when used in equations you'll get very different results
var result:int = int(n) * 10; //result is 10
var result:int = n * 10; //result is 19.89700
var result:int = int(s2) * 10; //result is 0
trace(s2 as Number); //outputs null
trace(s2 as int); //outputs null
trace(Number(s2)); //outputs NaN
Это хорошая и важная тема. Как правило, я использую «as» при работе с Objects и Cast () при использовании более простых типов данных, но мне нравится структурировать свой код.