WEB开发网
开发学院网页设计JavaScript JavaScript面向对象的支持(上) 阅读

JavaScript面向对象的支持(上)

 2010-09-14 13:37:41 来源:WEB开发网   
核心提示: 一个常常被开发者忽略的事实是:JavaScript本身是没有事件(Event)系统的,通常我们在JavaScript用到的onclick等事件,JavaScript面向对象的支持(上)(9),其实是IE的DOM模型提供的,从更内核的角度上讲:IE通过COM的接口属性公布了一组事件接口给DO

一个常常被开发者忽略的事实是:JavaScript本身是没有事件(Event)系统的。通常我们在JavaScript用到的onclick等事件,其实是IE的DOM模型提供的。从更内核的角度上讲:IE通过COM的接口属性公布了一组事件接口给DOM。有两个原因,使得在JS中不能很好的识别“一个属性是不是事件”:

- COM接口中本身只有方法,属性与事件,都是通过一组get/set方法来公布的。

- JavaScript中,本身并没有独立的“事件”机制。因此我们看到event的识别方法,是检测属性名是否是以'on'字符串开头(以'On'开头的是Qomo的约定)。接下来,由于DOM对象中的事件是可以不指定处理函数的,这种情况下事件句柄为null值(Qomo采用相同的约定);在另外的一些情况下,用户可能象obj2这样,定义一个值为 undefined的事件。因此“事件”的判定条件被处理成一个复杂的表达式:

("属性以on/On开头" && ("值为null/undefined" || "类型为function"))另外,从上面的这段代码的运行结果来看。对DOM对象使用for..in,是不能列举出对象方法来的。最后说明一点。事实上,在很多语言的实现中,“事件”都不是“面向对象”的语言特性,而是由具体的编程模型来提供的。例如Delphi中的事件驱动机制,是由Win32操作系统中的窗口消息机制来提供,或者由用户代码在Component/Class中主动调用事件处理函数来实现。“事件”是一个“如何驱动编程模型”的机制/问题,而不是语言本身的问题。然而以PME(property/method/event)为框架的OOP概念,已经深入人心,所以当编程语言或系统表现出这些特性来的时候,就已经没人关心“event究竟是谁实现”的了。

上一页  4 5 6 7 8 9 10  下一页

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接