日期:2014-05-16 浏览次数:20343 次
<html> <head> <title>test</title> <script> function DoEvents(){ this.lstner=[]; this.addListen=function(obj){//添加侦听 obj=typeof(obj)=="string"?document.getElementById(obj):obj //如果传入的obj 是字符串, 则用docuent去得到对象,加入到数组中 this.lstner.push(obj); } this.broadcastEvent=function(f,args){//广播事件 // f 开始传入时是个字符串,经过 eval 转换后,变为函数 for(i=0;i<this.lstner.length;i++){ eval(f).apply(this.lstner[i],args); //将showid这个函数,放到lstner[i]这个对象中执行, 换句话说 showid中的this,表示lstner[i] 这个对象 //showid 这个函数会立即被触发并执行 } } } //应用 var de=new DoEvents(); window.onload=function(){ for(i=0;i<6;i++){ de.addListen("test"+i); } } function showId(a){//测试 方法 this.innerHTML=a+this.id; } function test(){ var arr=["该标签的ID是:"]; de.broadcastEvent("showId",arr); } </script> </head> <body> <div id="test0">000</div> <div id="test1">111</div> <div id="test2">222</div> <div id="test3">333</div> <div id="test4">444</div> <div id="test5">555</div> <input type="button" onClick="test()" value="test" /> </body> </html>
MyObj={ a:1, show:function(){ alert(11111111); } } function test(a){ alert("execute test method "+a); } window.onload=function(){ test.apply(MyObj,["ss"]); }