我总是对覆盖自定义事件有疑问。我不知道为什么或内部覆盖功能做什么。我搜索谷歌,但没有得到太多的反馈。如果有人可以点亮我,我感激不尽。感谢。
修改
即使我使用自定义事件而没有覆盖,我的项目似乎也能正常工作。有人可以解释一下吗?感谢。
答案 0 :(得分:6)
通常,您需要在需要修改其使用时覆盖该函数。例如,假设我有一个名为Car的课程。在这个课程中,我有一个叫做go()的函数来启动汽车。
现在,如果我将这个类扩展到另一个名为PickupTruck的类中,我需要覆盖Car类的go函数,这样它不仅可以启动汽车,还可以附加卡车预告片。
因此,在您的情况下,您必须覆盖CustomEvent类的clone方法,因为它应该返回一个新的CustomEvent而不是一个新的Event。
答案 1 :(得分:3)
来自docs:
创建自己的自定义事件时 class,你必须覆盖继承 Event.clone()方法为了它 复制你的属性 自定义类。如果你没有全部设置 您添加的属性 事件子类,那些属性将 没有正确的值时 侦听器处理redispatched 事件
因此,如果您不重写克隆并重新发送事件,则可能会出现问题。此外,问题不仅在于不会复制自定义属性。将在基类Event
上调用clone方法。这将返回Event
个对象,而不是CustomEvent
。如果您的处理程序需要CustomEvent
并收到Event
,则会抛出错误并且处理程序中的代码将无法运行。