JavaScript 中的有限状态机,第 2 部分: 实现组件
2010-09-14 13:20:54 来源:WEB开发网清单 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 元素定位技术。源代码 中的构造方法就采用这种方法。
Tags:JavaScript 有限 状态
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接