我目前正在阅读 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 关键字时,它实际上只是调用父类(super class)(eventDispatcher)构造函数吗?
最佳答案
这不是创建新实例,而是类型转换。
这意味着事件对象的 target
属性被 Event 类转换为 Object,因此告诉编译器目标实际上是 Thermometer 类的一个实例,它以这种风格类型转换。你也可以这样写:
var thermometer:Thermometer = event.target as Thermometer;
两者本质上是同一件事,但是当使用支持自定义对象的代码建议/完成的编辑器时,Class(something)
符号是首选,因为它将使编辑器能够提供建议根据您的类型转换。
关于actionscript-3 - ActionScript 3 : Why would you omit the new keyword when instantiating a custom eventDispatcher?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080696/