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 as Object).toString()显示.如果我们不给变量一个数据类型,比如t22,那么问题永远不会遇到.为什么actionscript3.0编译器不能重新认为t2既是TestTwo又是Object?