jQuery源碼探索之路(4)-- .eq(), .first(), .last(), .find(), .get()的實現(xiàn)

  1. 自己最近在學(xué)習(xí)一些js的插件的寫法,那么當(dāng)然就繞不開jquery左权,于是自己就學(xué)習(xí)中遇到的一些問題做些總結(jié)和記錄
  1. 自己也是在學(xué)習(xí)過程中,有問題請各位指出痴颊,希望大伙能多多支持赏迟,給給star,點點贊唄蠢棱,github地址

這次增加五個方法,.eq(), .first(), .last(), .find(), .get()瀑梗,不明白這個幾個方法作用的可以去看下JQ的使用文檔烹笔,先放代碼

Ye.prototype = {
//....
 find: function(selector) {
     if (!selector) return;
     var context = this.selector;
     return new Ye(context + ' ' + selector);
 },
 first: function() {
     return new Ye(this[0]);
 },
 last: function() {
     var len = this.length - 1;
     return new Ye(this[num]);
 },
 eq: function(num) {
     var num = num < 0 ? (this.length - 1) : num;
     return new Ye(this[num]);
 },
 get: function(num) {
     var num = num < 0 ? (this.length - 1) : num;
     return this[num];
 },
//...
}

這幾個方法都很類似,都是需要返回只有指定的那個DOM的JQ對象抛丽。

我們就可以有兩種思路谤职,一種是將那個JQ對象中除了那個指定DOM外其他的DOM都去掉,另一種思路就是用那個DOM構(gòu)造一個新的JQ對象亿鲜,再將其返回就好了允蜈。

在JQ源碼中其實也是利用的第二種思路,只是它專門封裝了一個.pushStack()方法來構(gòu)造新的JQ對象蒿柳,其中涉及到修改selector饶套,上下文context等。

我們就偷偷懶垒探,直接利用new Ye(selector)來構(gòu)造就好了妓蛮。

get方法只需返回DOM對象,其他eq,first,last都需要封裝圾叼。

find()方法實際上是比較復(fù)雜的蛤克,但我們也可以偷下懶,利用selector屬性可以拿到當(dāng)前JQ對象的選擇器夷蚊,再和.find(selector)里的selector拼接起來就可以得到一個新的selector构挤。
然后就可以構(gòu)造新的JQ對象了。return new Ye(context + ' ' + selector);

例如$("ul").find("li"),我們拼接成"ul li"傳過去return new Ye("ul li")

 find: function(selector) {
     if (!selector) return;
     var context = this.selector;
     return new Ye(context + ' ' + selector);
 },

這幾個方法就大功告成啦惕鼓。


附:
既然您看都看完了筋现,麻煩您點個贊,給個star唄箱歧,謝謝您的支持
源碼地址:https://github.com/LY550275752/my-js-plug/blob/master/Ye.js

如果您不知道我在說什么的話矾飞,推薦您從頭開始看我的這個系列文章:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呀邢,隨后出現(xiàn)的幾起案子凰慈,更是在濱河造成了極大的恐慌,老刑警劉巖驼鹅,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件微谓,死亡現(xiàn)場離奇詭異,居然都是意外死亡输钩,警方通過查閱死者的電腦和手機豺型,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來买乃,“玉大人姻氨,你說我怎么就攤上這事〖粞椋” “怎么了肴焊?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵前联,是天一觀的道長。 經(jīng)常有香客問我娶眷,道長似嗤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任届宠,我火速辦了婚禮烁落,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豌注。我一直安慰自己伤塌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布轧铁。 她就那樣靜靜地躺著每聪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪齿风。 梳的紋絲不亂的頭發(fā)上药薯,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音聂宾,去河邊找鬼果善。 笑死诊笤,一個胖子當(dāng)著我的面吹牛系谐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讨跟,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼纪他,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晾匠?” 一聲冷哼從身側(cè)響起茶袒,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凉馆,沒想到半個月后薪寓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡澜共,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年向叉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦董。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡母谎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出京革,到底是詐尸還是另有隱情奇唤,我是刑警寧澤幸斥,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站咬扇,受9級特大地震影響甲葬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冗栗,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一演顾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隅居,春花似錦钠至、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涕蚤,卻和暖如春宪卿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背万栅。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工佑钾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烦粒。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓休溶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扰她。 傳聞我的和親對象是個殘疾皇子兽掰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,318評論 0 8
  • 第1章 簡介 第2章 DOM節(jié)點的創(chuàng)建 2-1 DOM創(chuàng)建節(jié)點及節(jié)點屬性 通過JavaScript可以很方便的獲...
    mo默22閱讀 800評論 0 8
  • DOM創(chuàng)建節(jié)點及節(jié)點屬性 通過JavaScript可以很方便的獲取DOM節(jié)點,從而進行一系列的DOM操作徒役。但實際上...
    阿r阿r閱讀 1,003評論 0 9
  • 生完寶寶一晃半年要過去了彬祖,從100天后開始勵志的看書寫作谷遂,可惜持續(xù)時間不到一個月就被寶寶出現(xiàn)的睡眠問題打敗锡凝。從四個...
    安婩閱讀 104評論 0 0
  • 2016-08-30 氺慶 提到“說教“這件事贰剥,我想大家腦海里浮現(xiàn)最多的景象莫過于父母喋喋不休的嘮叨,課堂上老師的...
    靳水悠悠閱讀 5,019評論 0 2