国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從jquery的end()如何實(shí)現(xiàn)到pushStack()的延伸思想

妤鋒シ / 1879人閱讀

問(wèn)題:

查詢jquery源碼:

そうですね
看代碼:

輸出結(jié)果:


在jQuery對(duì)象中,每個(gè)對(duì)象都有一個(gè)prevObject屬性。

問(wèn)題1:這個(gè)屬性什么時(shí)候創(chuàng)建??----->>> 只要你創(chuàng)建了jQuery對(duì)象就會(huì)產(chǎn)生
問(wèn)題2:在哪里創(chuàng)建??------>>>> 在一個(gè)pushStack()方法里產(chǎn)生
問(wèn)題3:作用??? ----->>>>指向操作前的jQuery對(duì)象引用
問(wèn)題4:如何創(chuàng)建?? ------>>>> 看源碼:

步驟:

1. 創(chuàng)建一個(gè)jQuery對(duì)象,this.constructor()返回引用this
2. jQuery.merge 把elems節(jié)點(diǎn),合并到新的jQuery對(duì)象
3. 給返回的新jQuery對(duì)象添加屬性prevObject

現(xiàn)在是不是還有點(diǎn)不懂??沒(méi)關(guān)系,繼續(xù)看圖.....

先查找$(".warp")的子元素,然后調(diào)用prevObject屬性,對(duì)比一看,他們倆都是class=warp的最外層div,證明prevObject確實(shí)是指向前一個(gè)操作,如果不進(jìn)行任何破壞源對(duì)象的情況下(就是不進(jìn)行查詢過(guò)濾操作),該對(duì)象的prevObject對(duì)象就指向一個(gè)jQuery自己定義的空間,而且任何對(duì)象的prevObject都指向它,如圖:

總結(jié):

備注:其實(shí)這個(gè)圖略微有些瑕疵,$(".warp").children()其實(shí)指向的是一個(gè)$(".warp")的一個(gè)副本

$(".warp").children().prevObject != $(".warp")
$(".warp").children().prevObject !== $(".warp")

優(yōu)點(diǎn)
1.很適合鏈?zhǔn)讲僮?/strong>,比如我需要在一個(gè)父元素內(nèi)尋找?guī)讉€(gè)毫無(wú)規(guī)律的子元素設(shè)置屬性或者搞其他事情,在javascript中,你需要:

$(".father").find(".son1").prop()....
$(".father").find(".son5").prop()....
....

你看這代碼,不停的創(chuàng)建這個(gè)父元素對(duì)象(當(dāng)然你可以緩存這個(gè)父對(duì)象),而且必須寫(xiě)多行,倆者之間沒(méi)有任何關(guān)聯(lián)。而jquery利用了他們的共有規(guī)律(都是調(diào)用父元素去查找子元素進(jìn)行操作,那我何不直接使用某個(gè)方法返回上一級(jí)操作的對(duì)象??)直接使用一個(gè)prevobject屬性去返回它,這樣就有了:

$(".father").find(".son1").prop().....巴拉巴拉操作  .prevObject.find(".son5").prop()...

直接一行完成操作像一條鏈子,不僅好看,還一目了然....
2.我們很少使用pushStack方法,然而在jQuery中,好多增刪改查操作都會(huì)使用這個(gè)方法,這使得該方法的封裝性和穩(wěn)定性能都很very good!!

注意:addBack()方法返回的是當(dāng)前操作對(duì)象和上一個(gè)操作對(duì)象,而且這個(gè)組合的新的對(duì)象會(huì)緩存在pushStack棧中

當(dāng)我們寫(xiě)腳本的時(shí)候,對(duì)代碼的封裝都要很好的完成,把一些最基本的但又是涉及到很多函數(shù)操作時(shí)的方法封裝在一個(gè)函數(shù)中,然后只提供一個(gè)接口給外面,類似于java的接口(高度抽象的方法),外面只能通過(guò)這個(gè)接口的一些屬性或者方法去調(diào)用,你可以寫(xiě)在原型上,采用原型模式,或者組合使用構(gòu)造函數(shù)模式和原型模式,如果不適合你也可以采用穩(wěn)妥構(gòu)造函數(shù)模式.

借鑒:
1.http://www.cnblogs.com/aaronj...
2.http://blog.csdn.net/wulex/ar...
3.https://stackoverflow.com/que...
4.https://www.learningjquery.co...
5.https://www.cnblogs.com/MnCu8...
6.http://jquery.cuishifeng.cn/i...
7.http://www.runoob.com/jquery/...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/93591.html

相關(guān)文章

  • jQuery 源碼系列(九)回溯機(jī)制

    摘要:在對(duì)象的內(nèi)部,有著一個(gè)對(duì)象棧,用來(lái)維護(hù)所有已經(jīng)操作過(guò)的對(duì)象。這樣來(lái)想一想,如果每一個(gè)對(duì)象都有一個(gè)指針指向上一個(gè)對(duì)象的話,也就間接組成了一個(gè)對(duì)象棧。 歡迎來(lái)我的專欄查看系列文章。 學(xué)習(xí)了 prevObject 之后發(fā)現(xiàn),我之前寫(xiě)的一篇博客介紹 pushStack 函數(shù)那個(gè)內(nèi)容是有問(wèn)題的。本來(lái)我以為這個(gè) pushStack 函數(shù)就是一個(gè)普通的函數(shù),它接受一個(gè) DOM (數(shù)組)參數(shù),把該參數(shù)...

    hss01248 評(píng)論0 收藏0
  • 淺析jQuery整體框架與實(shí)現(xiàn)(上)

    摘要:通常的做法是,為它們指定回調(diào)函數(shù)。請(qǐng)求返回請(qǐng)求返回請(qǐng)求返回異步隊(duì)列解耦異步任務(wù)和回調(diào)函數(shù)為模塊隊(duì)列模塊事件提供基礎(chǔ)功能。 前言 jQuery整體框架甚是復(fù)雜,也不易讀懂,這幾日一直在研究這個(gè)笨重而強(qiáng)大的框架。jQuery的總體架構(gòu)可以分為:入口模塊、底層模塊和功能模塊。這里,我們以jquery-1.7.1為例進(jìn)行分析。 jquery的總體架構(gòu) 16 (function( window,...

    VEIGHTZ 評(píng)論0 收藏0
  • jQuery源碼分析2-JQ對(duì)象添加一些方法和屬性

    摘要:節(jié)點(diǎn)修改對(duì)象的屬性,這就相當(dāng)于把對(duì)象轉(zhuǎn)成了一個(gè)類數(shù)組,最后返回,可用于鏈?zhǔn)秸{(diào)用。如果傳入的是單標(biāo)簽,且第二個(gè)參數(shù)是一個(gè)純對(duì)象例如則把后面對(duì)象的屬性一一添加到創(chuàng)建的這個(gè)節(jié)點(diǎn)的屬性上。 我們先看看jQuery的原型中初始化了哪些屬性和方法: jQuery.fn = jQuery.prototype = { jquery: core_version, //jquery版本號(hào) ...

    TANKING 評(píng)論0 收藏0
  • FE.SRC-逐行分析jQuery2.0.3源碼-完整筆記

    摘要:根據(jù)項(xiàng)目選型決定是否開(kāi)啟。為了壓縮,可維護(hù)為了支持從而使用代替變量存儲(chǔ)防沖突會(huì)用到,形如版本號(hào)聲明最終調(diào)用的是這個(gè)原型實(shí)際上。功能檢測(cè)統(tǒng)一兼容性問(wèn)題。 概覽 (function (){ (21 , 94) 定義了一些變量和函數(shù) jQuery=function(); (96 , 293) 給jQuery對(duì)象添加一些方法和屬性; (285 , 347) ...

    Lin_R 評(píng)論0 收藏0
  • FE.SRC-逐行分析jQuery2.0.3源碼-完整筆記

    摘要:根據(jù)項(xiàng)目選型決定是否開(kāi)啟。為了壓縮,可維護(hù)為了支持從而使用代替變量存儲(chǔ)防沖突會(huì)用到,形如版本號(hào)聲明最終調(diào)用的是這個(gè)原型實(shí)際上。功能檢測(cè)統(tǒng)一兼容性問(wèn)題。 概覽 (function (){ (21 , 94) 定義了一些變量和函數(shù) jQuery=function(); (96 , 293) 給jQuery對(duì)象添加一些方法和屬性; (285 , 347) ...

    褰辯話 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<