我希望通过实施Events
并使用this.fireEvent("complete")
,在我的MooTools类中使用onComplete事件。默认情况下,我只想让班级什么都不做。那么你怎么会以最干净,最安全的方式认识到默认的“无所事事”呢?
我是否应该省略默认类选项对象中的选项onComplete
,并在上下文中仍然使用this.fireEvent("complete")
?或者这会导致错误或什么?我一直这样做,但我不确定这是不是最好的方式......
您会使用类似if(this.options.onComplete && instanceOf(this.options.onComplete, Function)) { this.fireEvent("complete") }
的内容吗?或者你会指定一个空函数作为默认值options: { onComplete: function(){} }
?
我不关心此时最短的代码,但我想知道如何做到最符合和节省内存的方式。
感谢您的推荐! :)
答案 0 :(得分:1)
好问题。看一下MooTools的source code:
if (!events || !events[type]) return this;
如您所见,fireEvent将在未找到事件时返回当前实例。省略onComplete
并保留this.fireEvent('complete')
因此不会出现任何错误或奇怪行为。
我甚至不会在选项中指定一个空函数。正如您所看到的here,事件只是未定义,仅使用注释提及,因此人们知道它们存在且可以使用:
options: {
//onComplete: $empty
}