当前位置:  开发笔记 > 编程语言 > 正文

ActionScript 3:为什么在实例化自定义eventDispatcher时会省略new关键字?

如何解决《ActionScript3:为什么在实例化自定义eventDispatcher时会省略new关键字?》经验,为你挑选了1个好方法。

我目前正在阅读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)构造函数?



1> shanethehat..:

这不是创建新实例,而是在进行转换.

这意味着target事件对象的属性由Event类强制转换为Object,因此告诉编译器目标实际上是Thermometer类的一个实例,它是以这种方式强制转换的.你也可以这样写:

var thermometer:Thermometer = event.target as Thermometer;

这两者本质上是相同的,但是当使用支持自定义对象的代码建议/完成的编辑器时,Class(something)首选符号是因为它将使编辑器能够根据您的强制转换提供建议.


与C#中的"as"运算符类似,ActionScript3"as"运算符[如果无法将对象成功转换为所需类型,则会为null](http://stackoverflow.com/questions/4108380/as3-如何使用的最作为运营商).使用"as"但不包含空检查的代码几乎肯定会在以后的错误报告中结束!小心"as"并且不要过度使用它.施放是强大但危险的!建议新手巫师在施法时应用智慧!
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有