摘要:本來(lái)是想寫(xiě)分析的部分原理,想想因?yàn)橐矝](méi)有去看過(guò)源碼,就改了下標(biāo)題。準(zhǔn)備工作,用去實(shí)例化鏈?zhǔn)秸{(diào)用并非是無(wú)限延伸,而是調(diào)用完就回撤然后再次調(diào)用的過(guò)程。所以鏈?zhǔn)秸{(diào)用的基本原理是每個(gè)方法都要,并且每個(gè)方法調(diào)用都是基于的。
本來(lái)是想寫(xiě)分析jQuery的部分原理,想想因?yàn)橐矝](méi)有去看過(guò)jQuery源碼,就改了下標(biāo)題。
出發(fā)點(diǎn)很簡(jiǎn)單,寫(xiě)一個(gè)類似jQuery的簡(jiǎn)化版工具庫(kù)。
準(zhǔn)備工作,用$去實(shí)例化:
function $(domName) { return new obj(domName); }
鏈?zhǔn)秸{(diào)用并非是無(wú)限延伸,而是調(diào)用完就回撤然后再次調(diào)用的過(guò)程。
所以鏈?zhǔn)秸{(diào)用的基本原理是 每個(gè)方法都要return this,并且每個(gè)方法調(diào)用都是基于this的。
就好比打拳,雖然打出去的動(dòng)作不一樣,但是打出去就得收回來(lái),再出拳。
出于簡(jiǎn)化與個(gè)人水平原因,選擇器方面,暫時(shí)只寫(xiě)了id 和 class類型的
function obj(domName) { if (String(domName)[0] === "#") { this.total = "singular";//表示選擇器獲得節(jié)點(diǎn)為單數(shù),調(diào)用其他方法的時(shí)候無(wú)需循環(huán) this.init = document.getElementById(new String(domName).substring(1,new String(domName).length));//獲取節(jié)點(diǎn) }else if(String(domName)[0] === "."){ this.total = "majority";//表示選擇器獲得節(jié)點(diǎn)為多數(shù),調(diào)用其他方法的時(shí)候需要循環(huán) this.init = document.getElementsByClassName(new String(domName).substring(1,new String(domName).length));//獲取節(jié)點(diǎn) } this.length = this.init.length; }
click事件(change,mouseover等事件原理類似)
obj.prototype.click = function (cb) { this.init.onclick = cb;//節(jié)點(diǎn)點(diǎn)擊觸發(fā)回調(diào)函數(shù) return this; }
eq選擇器,eq是改變this的選擇對(duì)象(this.init)
obj.prototype.eq= function (index) { this.init = this.init[index]; this.total = "singular";//改變選擇節(jié)點(diǎn)的數(shù)目類型 return this; }
hide(show需要獲取一下之前的display。。。相比較hide復(fù)雜一些)
obj.prototype.hide = function () { if (this.total === "majority") {//選擇的節(jié)點(diǎn)為多數(shù)需要循環(huán) for(let i = 0; i < this.init.length; i ++) { this.init[i].style.display = "none"; } }else if( this.total === "singular"){ this.init.style.display = "none"; } return this; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95442.html
摘要:鏈?zhǔn)绞侵冈诋?dāng)前達(dá)到狀態(tài)后,即開(kāi)始進(jìn)行下一個(gè)后鄰。在中發(fā)現(xiàn)沒(méi)有指定異步操作失敗的回調(diào)時(shí),會(huì)直接將函數(shù)返回的,后同設(shè)為狀態(tài),如此達(dá)成執(zhí)行后續(xù)失敗回調(diào)的效果。 原文鏈接 前言 前一陣子記錄了promise的一些常規(guī)用法,這篇文章再深入一個(gè)層次,來(lái)分析分析promise的這種規(guī)則機(jī)制是如何實(shí)現(xiàn)的。ps:本文適合已經(jīng)對(duì)promise的用法有所了解的人閱讀,如果對(duì)其用法還不是太了解,可以移步我的上...
摘要:本文將詳細(xì)解析深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖形圖像的基本原理。卷積神經(jīng)網(wǎng)絡(luò)與圖像理解卷積神經(jīng)網(wǎng)絡(luò)通常被用來(lái)張量形式的輸入,例如一張彩色圖象對(duì)應(yīng)三個(gè)二維矩陣,分別表示在三個(gè)顏色通道的像素強(qiáng)度。 本文將詳細(xì)解析深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖形圖像的基本原理。針對(duì)卷積神經(jīng)網(wǎng)絡(luò),本文將詳細(xì)探討網(wǎng)絡(luò) 中每一層在圖像識(shí)別中的原理和作用,例如卷積層(convolutional layer),采樣層(pooling layer),...
摘要:三大牛和在深度學(xué)習(xí)領(lǐng)域的地位無(wú)人不知。逐漸地,這些應(yīng)用使用一種叫深度學(xué)習(xí)的技術(shù)。監(jiān)督學(xué)習(xí)機(jī)器學(xué)習(xí)中,不論是否是深層,最常見(jiàn)的形式是監(jiān)督學(xué)習(xí)。 三大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton在深度學(xué)習(xí)領(lǐng)域的地位無(wú)人不知。為紀(jì)念人工智能提出60周年,的《Nature》雜志專門開(kāi)辟了一個(gè)人工智能 + 機(jī)器人專題 ,發(fā)表多篇相關(guān)論文,其中包括了Yann LeC...
摘要:到目前為止,的貢獻(xiàn)者團(tuán)隊(duì)共名成員,多條,可想而知,是一個(gè)多么龐大的項(xiàng)目。參考源碼分析整體架構(gòu)源碼解析讀書(shū)筆記第二章構(gòu)造對(duì)象函數(shù)詳解本文在上的源碼地址,歡迎來(lái)。 歡迎來(lái)我的專欄查看系列文章。 決定你走多遠(yuǎn)的是基礎(chǔ),jQuery 源碼分析,向長(zhǎng)者膜拜! 我雖然接觸 jQuery 很久了,但也只是局限于表面使用的層次,碰到一些問(wèn)題,找到 jQuery 的解決辦法,然后使用。顯然,這種做法的...
摘要:文章出處拜讀一個(gè)開(kāi)源框架,最想學(xué)到的就是設(shè)計(jì)的思想和實(shí)現(xiàn)的技巧。利用下的簡(jiǎn)單工廠模式,來(lái)將所有對(duì)于同一個(gè)對(duì)象的操作指定同一個(gè)實(shí)例。所以的中提供了以上中擴(kuò)展函數(shù)。 文章出處 http://www.cnblogs.com/aaronjs/p/3278578.html 拜讀一個(gè)開(kāi)源框架,最想學(xué)到的就是設(shè)計(jì)的思想和實(shí)現(xiàn)的技巧。 廢話不多說(shuō),jquery這么多年了分析都寫(xiě)爛了,老早以前就拜讀過(guò),...
閱讀 1686·2021-09-22 10:02
閱讀 1931·2021-09-02 15:40
閱讀 2835·2019-08-30 15:55
閱讀 2243·2019-08-30 15:44
閱讀 3593·2019-08-30 13:18
閱讀 3224·2019-08-30 11:00
閱讀 1945·2019-08-29 16:57
閱讀 564·2019-08-29 16:41