Все объекты в actionscript3.0 наследуются от класса Object, но компилятор actionscript3.0, похоже, недостаточно умен, чтобы это понять.
взгляните на следующий код:
package{
public class TestOne{
public function TestOne(){
var t2: TestTwo = new TestTwo();
trace(t2.toString()); // COMPILE TIME ERROR
trace((t2 as Object).toString(); // [object TestTwo]
var t22 : * = new TestTwo();
trace(t22.toString()); // [object TestTwo]
trace((t22 as Object).toString(); // [object TestTwo]
}
}
}
class TestTwo{}
t2.toString () выдает ошибку времени компиляции, поскольку тип данных t2 не включает toString () . Однако t2 действительно включает toString () , потому что это объект, как (t2 как Object) .toString () . Если мы не дадим переменной тип данных, такой как t22, то проблема никогда не возникнет. Почему компилятор actionscript3.0 не может сделать так, чтобы t2 был одновременно TestTwo и Object?