亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

跪求分析代碼, 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組件
  • 參與學習       26366    人
  • 解答問題       278    個

衡量攻城師能力是否成熟的重要指標,本課程會以彈窗組件為例

進入課程

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

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號