WEB开发网
开发学院网页设计JavaScript JavaScript 中的有限状态机,第 2 部分: 实现组件... 阅读

JavaScript 中的有限状态机,第 2 部分: 实现组件

 2010-09-14 13:20:54 来源:WEB开发网   
核心提示: 清单 5. 在老式浏览器中连接鼠标事件的 JavaScript 代码function FadingTooltip(htmlElement, tooltipContent, parameters) {...else { // for older browsersvar self = this

清单 5. 在老式浏览器中连接鼠标事件的 JavaScript 代码

function FadingTooltip(htmlElement, tooltipContent, parameters) {
  ...
  else { // for older browsers
    var self = this;
    var previousOnmouseover = htmlElement.onmouseover;
    htmlElement.onmouseover = function(event) {
      self.handleEvent(event ? event : window.event);
      if (previousOnmouseover) {
        htmlElement.previousHandler = previousOnmouseover;
        htmlElement.previousHandler(event ? event : window.event);
      }
    };
    ... and similarly for 'onmousemove' and 'onmouseout' ...
  }
}

但是注意,这种方法是不完整的。它允许部件注册其他部件已经注册的相同事件,然后将它们链接在一起,但是不允许注销其他事件函数,因为链接的指针对于它们不可访问。

为了适应性更强,代码将构造方法的 this 变量(它指向 FadingTooltip 对象)复制到局部变量 self 中,然后使用 self 指针在匿名函数定义中定位 FadingTooltip 对象。这就把 FadingTooltip 对象的指针封闭在匿名函数定义中,所以当任何浏览器调用它们时,它们都可以直接定位 FadingTooltip 对象,而不依靠浏览器提供 HTML 元素的指针,也不需要将 FadingTooltip 对象的指针存储在 HTML 元素中。

对于为 W3C 和 Microsoft 事件模型定义的匿名函数,都可以将 FadingTooltip 对象的指针封闭在其中。这样就不必将对象的指针保存在 HTML 元素中,并可以在所有事件模型中应用同样的 HTML 元素定位技术。源代码 中的构造方法就采用这种方法。

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

Tags:JavaScript 有限 状态

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