我目前正在阅读《 ActionScript 3圣经》,作者展示了一个示例,其中创建了一个自定义eventDispatcher类。以后在代码中使用该类时,将这样称呼它:

//Thermometer is a custom eventDispatcher that extends the eventDispatcher class.
var thermometer:Thermometer = Thermometer(event.target); //why no new keyword?

我是一名新程序员,我很好奇是否有人可以解释它是如何工作的?为什么省略了新关键字?当您在扩展另一个类的类上省略new关键字时,它实际上只是在调用superclass(eventDispatcher)构造函数吗?

最佳答案

这不是在创建新实例,而是在投射。

这意味着事件对象的target属性由Event类转换为Object,因此要告诉编译器目标实际上是Thermometer类的实例,则以这种样式进行转换。您也可以这样写:

var thermometer:Thermometer = event.target as Thermometer;

两者本质上是同一件事,但是当使用支持自定义对象的代码建议/完成的编辑器时,首选Class(something)表示法,因为它将使编辑器根据您的演员表提供建议。

关于actionscript-3 - ActionScript 3:为什么在实例化自定义eventDispatcher时省略new关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7080696/

10-10 19:27