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>

');