
上QQ阅读APP看书,第一时间看更新
2.5 JavaScript中的事件编程
事件编程不仅限于Java和C#这样的静态语言,JavaScript就是以事件驱动编程闻名的动态弱类型语言。如果不对没有类型检查(和IDE的输入提示)感到不舒服,JavaScript的动态弱类型和方便函数式编程的性质可以让代码极为通用、简洁和灵活。下面是JavaScript实现自定义事件编程的一种途径。

将任何对象传递给eventify函数,返回的对象就具备了发布事件的能力。添加和删除收听者的方法分别为addListener和removeListener,触发事件的方法为fireEvent。收听者不再是对象,而仅是一个函数。从发布者传递给收听者的事件信息对象event有两个属性type和target,分别为事件的名称和发布者。另外也可以直接在收听者内用this关键字获取发布者。下面是应用上述函数的一个简单例子。person自定义对象从eventify方法返回后声明了一个hunger事件,收听者在浏览器的控制台打印出I'm hungery。
