用【观察者模式】实现自定义事件
星期四, 7月 22nd, 2010根据昨天写的那篇文章,今天写了个例子来配合说明。没有列举超人起飞的例子,那个例子是给自定义的superman对象,添加了3个自定义事件,而我下面的例子是给大家最熟悉也最关心的Element对象添加自定义事件。
代码如下(需要引入publisher):
var fuck=function(e){
this.e=e || ”;
alert(this.e+’ fuck off’);
}
Element.prototype.onfuck=new publisher;
fuck.subscriber(Element.prototype.onfuck);
var page=document.getElementById(’page’);
page.onfuck.deliver(); //alert(fuck off);
page.onfuck.deliver(1); //alert(1fuck off);
/* 你可以给你喜欢的事情随便添加自定义事件,在需要的时候就deliver触发。 */
page.onclick=function(){
this.onfuck.deliver(’ye~click my ‘+this.id+’ and’); //alert(ye~click my page and fuck off);
}
最后,关于自定义事件的触发条件,必须在这里说明,他的触发,比如click,比如mouseover等动作的实现
是需要自己来编写的,你可以借助click等动作触发,也可以自己模拟,比如重复轮询等,触发用deliver,触发条件必须自己实现。
所以最后的最后,自定义事件或者观察着模式的应用和作用,总结起来就是更彻底的包装了一些代码,实现js的高度解耦,让功能去做功能要做的事,分离开功能和被事件所绑定的对象,可能是Element对象,也可能是自己所创建的对象,任何对象。
希望我不要误导到一些人吧,更多关于自定义事件的文章google一下,仔细阅读,很多种实现方法,关键看适用场合适用场景了。这只是一种设计思想,而不是什么万能药,在需要实现很复杂的业务逻辑的时候用来解耦的一种很好方法。












