我目前正在阅读Actionscript 3 Bible,作者展示了一个创建自定义eventDispatcher类的示例。当该类稍后在代码中使用时,它被称为:
//Thermometer is a custom eventDispatcher that extends the eventDispatcher class.
var thermometer:Thermometer = Thermometer(event.target); //why no new keyword?
我是一名新的程序员,如果有人可以解释这是如何工作的,我很好奇?为什么省略new关键字?如果在扩展另一个类的类上省略new关键字,它实际上只是调用超类(eventDispatcher)构造函数?
答案 0 :(得分:7)
这不是创建新实例,而是强制转换。
这意味着事件对象的target
属性由Event类强制转换为Object,因此告诉编译器目标实际上是Thermometer类的一个实例,它被强制转换为这种风格。你也可以这样写:
var thermometer:Thermometer = event.target as Thermometer;
这两个本质上意味着相同的事情,但是当使用支持自定义对象的代码建议/完成的编辑器时,Class(something)
表示法是首选,因为它将使编辑器能够根据您的演员表提供建议。 / p>