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

資訊專欄INFORMATION COLUMN

javaScript鏈?zhǔn)秸{(diào)用

boredream / 589人閱讀

摘要:通過(guò)實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用來(lái)理解鏈?zhǔn)秸{(diào)用是我們平常經(jīng)常會(huì)用到,比如中的還有中的。直接用一個(gè)匿名函數(shù)返回一個(gè)的對(duì)象,然后賦值給并掛載到全局上,這樣就實(shí)現(xiàn)了一個(gè)的鏈?zhǔn)秸{(diào)用了。

通過(guò)實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用來(lái)理解

?? 鏈?zhǔn)秸{(diào)用是我們平常經(jīng)常會(huì)用到,比如JQuery中的$("id").eq(0), 還有l(wèi)odash中的_.chain().push()。 這些都是平常會(huì)用到的,但是都是已經(jīng)封裝好的,我們知道用起來(lái)很方便卻不知道實(shí)現(xiàn)的原理是什么。
?? 其實(shí)呢它并沒有很神秘,只不過(guò)是一種語(yǔ)法招數(shù),它能讓你通過(guò)重用一個(gè)初始操作來(lái)達(dá)到用少量代碼表達(dá)復(fù)雜操作的目的。

通過(guò)例子來(lái)分析鏈?zhǔn)秸{(diào)用

??其實(shí)鏈?zhǔn)秸{(diào)用就是讓一個(gè)類的每個(gè)方法都返回this值,從而達(dá)到鏈?zhǔn)秸{(diào)用
??首先創(chuàng)建一個(gè)構(gòu)造函數(shù),把那些元素作為數(shù)組保存在一個(gè)實(shí)例屬性中,并把所有定義在構(gòu)造器函數(shù)的 prototype屬性指向?qū)ο笾械姆椒ǘ挤祷赜靡哉{(diào)用方法的那個(gè)實(shí)例的引用,那么它就具有了進(jìn)行鏈?zhǔn)秸{(diào)用的能力
我們來(lái)看一下這段例子

 $("div")
      .eq(0)
      .css("width", "200px")
      .show();

這其實(shí)就是一段簡(jiǎn)單JQuery代碼,選擇第一個(gè)div設(shè)置css樣式,然后將它顯示出來(lái)。

    function JQuery(selector) {
      this.elements = document.querySelectorAll(selector);
    }
    
    JQuery.prototype = {
      eq: function(index) {
        this.elements = [this.elements[index]]
        return this;
      },
      css: function(prop, value) {
        this.elements.forEach(function(el) {
          // 動(dòng)態(tài)設(shè)置屬性
          el.style[prop] = value;
        })
        return this;
      },
      show: function() {
        this.css("display", "block")
        return this;
      },
    }

這段代碼很明顯在prototype上的三個(gè)函數(shù)都返回了this,在函數(shù)中實(shí)現(xiàn)對(duì)應(yīng)的功能也是直接使用this來(lái)獲取值,然后修改this中的值再返回this,這樣在下次調(diào)用的時(shí)候還是JQuery對(duì)象,從而實(shí)現(xiàn)了鏈?zhǔn)秸{(diào)用。
??既然函數(shù)都是在原型鏈上,那么肯定需要?jiǎng)?chuàng)建一個(gè)對(duì)象才能去調(diào)用函數(shù)吧,而我們并沒看到new JQuery,而且也沒有看見$符號(hào),那怎么才能使用呢。

window.$ = function(selector) {
  return new JQuery(selector);
}
$("div")
  .eq(0)
  .css("width", "200px")
  .show();

直接用一個(gè)匿名函數(shù)返回一個(gè)new JQuery()的對(duì)象,然后賦值給$并掛載到全局上,這樣就實(shí)現(xiàn)了一個(gè)JQuery的鏈?zhǔn)秸{(diào)用了。

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

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

相關(guān)文章

  • javaScript鏈?zhǔn)?/em>調(diào)用原理以及加法實(shí)現(xiàn)

    摘要:相信很多小伙伴在面試的過(guò)程中都被問過(guò)鏈?zhǔn)秸{(diào)用的原理,甚至有些面試官還會(huì)讓你用其實(shí)現(xiàn)例如加法操作,舉例第一次看到這個(gè)題目時(shí),或許你沒有什么頭緒,不要緊,讓我們慢慢來(lái)首先,大家還是否記得在使用時(shí),我們會(huì)經(jīng)常這樣去操作一個(gè)節(jié)點(diǎn)這是怎么做到的原理很 相信很多小伙伴在面試的過(guò)程中都被問過(guò)js鏈?zhǔn)秸{(diào)用的原理,甚至有些面試官還會(huì)讓你用其實(shí)現(xiàn)例如加法操作,舉例: add(1)(2)(3) //6...

    LuDongWei 評(píng)論0 收藏0
  • 聽飛狐聊JavaScript設(shè)計(jì)模式系列14

    摘要:本回內(nèi)容介紹上一回,聊了聊狀態(tài)模式,并介紹了一下介一回,聊鏈?zhǔn)骄幊蹋M一下,再模擬一下封裝一個(gè)庫(kù)。這一回,主要聊了鏈?zhǔn)秸{(diào)用,模擬了,尤其是,希望大家能喜歡這次代碼分享。下一回,聊一聊的策略模式。 本回內(nèi)容介紹 上一回,聊了聊狀態(tài)模式(State),并介紹了一下vue.js;介一回,聊鏈?zhǔn)骄幊蹋M一下jQuery,再模擬一下underscore.js,封裝一個(gè)庫(kù)。 1. 鏈?zhǔn)秸{(diào)用 (...

    fox_soyoung 評(píng)論0 收藏0
  • JavaScript 設(shè)計(jì)模式讀書筆記(四)——單體模式和鏈?zhǔn)?/em>調(diào)用

    摘要:?jiǎn)误w模式在多種設(shè)計(jì)模式中,單體模式是最簡(jiǎn)單,也是最基礎(chǔ)的設(shè)計(jì)模式。和之前說(shuō)到的下劃線表示私用成員方法比較起來(lái),最大的優(yōu)點(diǎn)就是可以創(chuàng)建真正的私用成員,使其不會(huì)在構(gòu)造函數(shù)之外被隨意修改。 單體模式 在多種Javascript設(shè)計(jì)模式中,單體模式是最簡(jiǎn)單,也是最基礎(chǔ)的設(shè)計(jì)模式。它基礎(chǔ)到似乎不太像是一種設(shè)計(jì)模式,因?yàn)槲覀冊(cè)诰帉懘a的過(guò)程中隨時(shí)都會(huì)用到,并不需要過(guò)多思考,這是它簡(jiǎn)單的一面。同時(shí)...

    DevWiki 評(píng)論0 收藏0
  • 鏈?zhǔn)?/em>調(diào)用與事件循環(huán)--一道JavaScript面試題的思考

    摘要:最后畫幾張粗糙的圖,簡(jiǎn)單描述一下這個(gè)執(zhí)行的過(guò)程因?yàn)槭擎準(zhǔn)秸{(diào)用,所以在鏈上的都會(huì)入棧然后執(zhí)行,額,執(zhí)行棧少畫了和。。。 前言:昨天在群里討(jin)論(chui)技(niu)術(shù)(pi),有位老鐵發(fā)了一道他面的某公司面試題,順手保存了。今早花了一點(diǎn)時(shí)間把這題做了出來(lái),發(fā)現(xiàn)挺有意思的,決定在今天認(rèn)真工(hua)作(shui)前,與大家分享我的解題方案和思考過(guò)程。 題目如下(可以自己先思考一會(huì)...

    wow_worktile 評(píng)論0 收藏0
  • javascript設(shè)計(jì)模式鏈?zhǔn)?/em>模式學(xué)習(xí)

    摘要:鏈?zhǔn)侥J酵ㄟ^(guò)在對(duì)象方法中將當(dāng)前對(duì)象返回,實(shí)現(xiàn)對(duì)同一個(gè)對(duì)象多個(gè)方法的鏈?zhǔn)秸{(diào)用。我們?cè)囍薷纳厦娴暮瘮?shù)然后執(zhí)行為什么會(huì)報(bào)錯(cuò)呢因?yàn)檫@里,因?yàn)檫@里返回的指向的是,而不是的上并沒有這個(gè)方法。 ??鏈?zhǔn)侥J剑和ㄟ^(guò)在對(duì)象方法中將當(dāng)前對(duì)象返回,實(shí)現(xiàn)對(duì)同一個(gè)對(duì)象多個(gè)方法的鏈?zhǔn)秸{(diào)用。從而簡(jiǎn)化對(duì)該對(duì)象的多個(gè)方法的多次調(diào)用,對(duì)該對(duì)象的多次引用。 ??jquery是基于原型繼承,每個(gè)原型下的方法都返回當(dāng)前對(duì)象...

    shiina 評(píng)論0 收藏0

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

0條評(píng)論

boredream

|高級(jí)講師

TA的文章

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