document.write('
解析: 我们经常需要将一个函数对象暂时挂到一个引用上留待后面执行,因为不 到执行时是很难知道其具体参数的,而先前将它赋给那个引用时更是不知道。 执行一个与特定的 JavaScript 对象关联的事件处理函数,并且要知道调用该 对象的哪个方法。相关的例子是,用 JavaScript 对象来封装与特定 DOM 元素的 交互。这个 JavaScript 对象具有 doOnClick、doMouseOver 和 doMouseOut 方法, 并且当用户在该特定的 DOM 元素中触发了相应的事件时要执行这些方法。不 过,可能会创建与不同的 DOM 元素关联的任意数量的 JavaScript 对象,而且每 个对象实例并不知道实例化它们的代码将会如何操纵它们(即注册事件处理函 数与定义相应的事件处理函数分离)。这些对象实例并不知道如何在全局环境中 引用自身,因为它们不知道引用它们的实例将会指定哪个全局变量(如果有)。
<input type="button" name=" 按钮名字 " value="button" id="testbt" />
<script type="text/javascript">
function associateObjWithEvent(obj, methodName) {
return (function(e) {
e = e || window.event;
return obj[methodName](e, this);
});
}
function DhtmlObject(elementId) {
var el = document.getElementById(elementId);
if(el) {
el.onmouseover = associateObjWithEvent(this,
"doMouseOver");
}
}
DhtmlObject.prototype.doMouseOver = function(event,
element) {
alert(element.name + " " + event.target + " " +
event.screenX);
}
var bt = new DhtmlObject("testbt");
//bt();
</script>
');