为了账号安全,请及时绑定邮箱和手机立即绑定

跪求分析代码, this.handlers[type].push(handler)是什么意思

on:function(type,handler){
	  	      	 if(typeof this.handlers[type]=="undefined"){
	  	      	 	this.handlers[type]=[];
	  	      	 }
	  	      	 this.handlers[type].push(handler);
  	      },
 
  	      fire:function(type,data){
  	      	     if(this.handlers[type] instanceof Array){
  	      	     	var handlers=this.handlers[type];
  	      	     	for(var i=0,len=handlers.length;i<len;i++){
  	      	     		handlers[i](data);
  	      	     	}
  	      	     }
  	      },

请教分析代码, this.handlers[type].push(handler)是什么意思?视频里说“需要执行的回调函数push到这个数组中”,那这个数组是handlers[type]?? 搞不懂参数里面的type是什么类型= =,求大神详细解答fire和on里面的代码。。

正在回答

3 回答

handlers是一个对象

type相当于key值 而value值为回调函数handler的数组

http://img1.sycdn.imooc.com//56fe123b0001ef9d02430208.jpg

每当传入新的type时 对应的数组还没初始化 

如果传入相同的type,则添加到对应的数组中

0 回复 有任何疑惑可以回复我~
#1

Helianthuserin 提问者

非常感谢!
2016-04-05 回复 有任何疑惑可以回复我~

其实我也不明白那个typeof加在哪儿什么意思,但是你看哦,构造函数里面的this.handlers是空的,什么属性都没有的,如果你传进来一个“alert”,那么就是this.handlers[“alert”],即this.handlers.alert, 恩,this.handlers是空的,那么this.handlers还没有alert这个属性呢,所以他肯定是undefiend,if判断为true,那么就给alert的这个属性赋值一个空数组。handler是你传进来的那个回调函数,所以,数组的第一个元素就是你传进来的那个回调函数,下一次,你再在客户端写一下 win.on("alert",function(){alert("the second you click the alert button");});这时候alert这个属性已经有了,就会把你传进来的那个handler直接push进来。老师写的这段代码还是有点难懂,仔细再看看吧。

0 回复 有任何疑惑可以回复我~
#1

Helianthuserin 提问者

谢谢!!我去试试,谢谢这么耐心的解答~~
2016-04-12 回复 有任何疑惑可以回复我~

还有重点想再问问什么

if(typeof this.handlers[type]=="undefined")
this.handlers[type]=[];
                     }

要进行这个判断。。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
阿当大话西游之WEB组件
  • 参与学习       26370    人
  • 解答问题       275    个

衡量攻城师能力是否成熟的重要指标,本课程会以弹窗组件为例

进入课程

跪求分析代码, this.handlers[type].push(handler)是什么意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信