課程
/前端開發(fā)
/jQuery
/jQuery源碼解析(架構(gòu)與依賴模塊)
如果這樣寫,在回調(diào)函數(shù)中,只有通過this去取值了,。應(yīng)該寫成callback.apply(obj[i], i, obj[i], args)
2016-08-12
源自:jQuery源碼解析(架構(gòu)與依賴模塊) 2-11
正在回答
each:?function(obj,?callback,?args)?{???? var?value,???? i?=?0,???? length?=?obj.length,???? isArray?=?isArraylike(obj);?//?判斷是不是數(shù)組???? //?傳了第三個參數(shù)???? if?(args)?{???? if?(isArray)?{???? for?(;?i?<?length;?i++)?{???? //?相當(dāng)于:???? //?args?=?[arg1,?arg2,?arg3];???? //?callback(args1,?args2,?args3)。然后callback里邊的this指向了obj[i]???? value?=?callback.apply(obj[i],?args);???? if?(value?===?false)?{???? //?注意到,當(dāng)callback函數(shù)返回值會false的時候,注意是全等!循環(huán)結(jié)束???? break;???? }???? }???? //?非數(shù)組???? }?else?{???? for?(i?in?obj)?{???? value?=?callback.apply(obj[i],?args);???? if?(value?===?false)?{???? break;???? }???? }???? }???? //?A?special,?fast,?case?for?the?most?common?use?of?each???? }?else?{???? //?數(shù)組???? //?其實(shí)這里代碼有點(diǎn)贅余,如果考慮代碼的簡潔性犧牲一點(diǎn)點(diǎn)性能???? //?在處理數(shù)組的情況下,也是可以用?for(i?in?obj)的???? if?(isArray)?{???? for?(;?i?<?length;?i++)?{???? //?相當(dāng)于callback(i,?obj[i])。然后callback里邊的this指向了obj[i]???? value?=?callback.call(obj[i],?i,?obj[i]);???? if?(value?===?false)?{???? break;???? }???? }???? //?非數(shù)組???? }?else?{???? for?(i?in?obj)?{???? value?=?callback.call(obj[i],?i,?obj[i]);???? if?(value?===?false)?{???? break;???? }???? }???? }???? }???? return?obj;???? },
源碼里面有兩個,教程里面是帶有第三方參數(shù)的
apply 和 call 第一個參數(shù)都是指代的是 callback 函數(shù)中 this 環(huán)境。
如果按照你的寫法:callback.apply(obj[i], args)。this 指向obj[i]沒有意義。
舉報
由淺入深地剖析jQuery庫的設(shè)計(jì)與實(shí)現(xiàn),揭開框架背后的秘密
3 回答value = callback.apply(obj[i], args);這個怎么傳上下文的?誰調(diào)用callback
3 回答for (; i < length; i++) {
1 回答callback回調(diào)問題(輸出的結(jié)果為什么是這樣)
1 回答eq實(shí)現(xiàn)中的 j = +i + ...中的 +i 是什么意思?
3 回答正則有問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-07-27
2018-07-27
源碼里面有兩個,教程里面是帶有第三方參數(shù)的
2016-09-01
apply 和 call 第一個參數(shù)都是指代的是 callback 函數(shù)中 this 環(huán)境。
如果按照你的寫法:callback.apply(obj[i], args)。this 指向obj[i]沒有意義。