javascript面向对象编程中的事件处理

时间:2021-03-23 19:47:48

      早已习惯了面向对象编程的思维,喜欢面向对象带来的许多好处,尤其是大大增加了代码的可重用性,即使是使用javascript这种面向对象特性并不明显的语言时,也希望能将功能划分到一个一个的对象中,特别是设计动态地页面控件时,面向对象编程使生成的控件使用起来非常的简洁。

      但是javascript毕竟不是真正的面向对象语言,在给控件添加事件响应函数时的一个个函数指针往往使得程序的结构变得支离破碎,任何有追求的人应该都无法忍受这种混乱的代码的存在。

      最近一年的工作中使用了大部分的javascript,对这种问题我尝试了许多种解决方案,目前终于形成了一套比较满意的思路。

比如编写一个简单模型的拖放,这里假设这个模型就是一个DIV

      这是一个比较完善的拖放实现,模型监听mousedown事件,事件触发后为body节点添加mousemove和mouseup事件,并将事件的触发集中于body节点,使拖放能够流畅无限制,mouseup事件触发后监听状态还原至mousedown事件触发以前。这段代码的真正重点在于事件的处理函数将对象的类方法简单的封装起来,使事件处理函数能够方便的访问对象的属性和方法,基本看不出结构化程序设计的痕迹。