this.lstner=[]//this.lstner? lstner是属性吗? this又是指什么对象, []是指数组吗?javascript的写法是这样的吗? 不用加个声明吗
//相当于类参数(this指当前类)。声明了一个数组,javascript的写法就是这样的,要加声明么?"=[]"不就说明了吗。
this.addListen=function(obj){
//添加侦听
obj=typeof(obj)=="string"?document.getElementById(obj):this.lstner.push(obj)
//这是一个逻辑判断的三元表达式(typeof(obj)=="string"?document.getElementById(obj):this.lstner.push(obj)) + 赋值(obj=),
//意思是如果obj是string类型(== 逻辑判断),则返回document.getElementById(obj),否则返回this.lstner.push(obj)<-将obj压入数组中后返回
//在最后,将返回值赋给obj,从下面的处理来看,其实赋值给obj没有什么实质用处。
}
this.broadcastEvent=function(f,args){//广播事件// broadcastEvent为什么在帮助文档和搜索引擎里找不到呢,他是指什么 <-内部自定义的方法,相当于类方法
for(i=0i<this.lstner.lengthi++){
eval(f).apply(this.lstner[i],args)//这句的意思是? ,<- 将指定的事件(f)绑定到需要触发事件的对象(this.lstner[i])上。
// 这个 f是指什么? args又是指什么? <- f是由调用时指定的事件名称(methodName), args 是该方法触发是所要的参数列表,请参照调用的地方。
}
}
}
js的监听事件就是相当于注册一个监听器,随时检测对应事件有没有发生,如果发生了自动调用定义好的函数来处理。一般情况下 监听事件是对应于dom元素而言的,同时也需要声明所监听事件种类。
比如可以为一个按钮设置监听事件,点击之后自动调用相应函数处理。
同时可以在用函数处理时使用事件对象(event object)来获得关于触发这个事件的对象的信息。