2011-08-22 60 views
2

我想通过执行Events并使用this.fireEvent("complete")来使我可以在我的MooTools类中使用onComplete事件。默认情况下,我只想让这个类别什么都不做。那么如何以最清洁和最安全的方式实现默认的“无所事事”呢?JavaScript,MooTools - Class.Event - onComplete:默认情况下不执行任何操作

我应该忽略默认类选项对象中的选项onComplete,并且仍然在上下文中使用this.fireEvent("complete")?或者这是造成错误还是什么?我只是做了这种方式的时候,但我不知道这是最好的方式......

你会使用类似if(this.options.onComplete && instanceOf(this.options.onComplete, Function)) { this.fireEvent("complete") }呢?或者你会指定一个空的函数作为默认值options: { onComplete: function(){} }

我不在乎最短代码在这一点上,但我想知道如何做到最符合和节省内存的方式。

感谢您的建议! :)

回答

1

好问题。看一看MooTools的的source code

if (!events || !events[type]) return this; 

正如你所看到的,fireEvent只会返回当前实例时没有找到的事件。省略onComplete并保持this.fireEvent('complete')因此不会给任何错误或怪异的行为。

我甚至不会在选项中指定一个空函数。正如你所看到here,该事件只是没有定义,只有使用的留言中提到让人们知道它们的存在,可用于:

options: { 
    //onComplete: $empty 
} 
+0

感谢您的快速答复。这是非常好的。 :) – headacheCoder