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

資訊專欄INFORMATION COLUMN

JS 鏈式調用 原理及實踐

BingqiChen / 1211人閱讀

摘要:一鏈式編碼好處同一對象多次其屬性或方法的時候,我們需要多次書寫對象進行或操作鏈式調用是一種簡化此過程的一種編碼方式,使代碼簡潔易讀。

一、鏈式編碼
好處
同一對象多次其屬性或方法的時候,我們需要多次書寫對象進行“.” 或 () 操作;鏈式調用是一種簡化此過程的一種編碼方式,使代碼簡潔、易讀。

舉個栗子(深刻不是很貼切的):日常餐廳取餐,通常我們一次拿取想要的食物一起結賬,如果每樣食物要分開取餐結賬估計內心的草泥馬要躁動起來了。

常用場景

#jQuery的Dom操作
$("select").on("click", callback)
           .on("change", callback);
#gulp編譯
gulp.src("/path/to/**.less")
    .pipe(less())
    .pipe(cssmin())

(廢話不多說,切入正題…… )

二、鏈式編碼的原理
鏈式調用原理就是作用域鏈;實現需要做的工作;

對象方法的處理 (操作方法)

處理完成返回對象的引用(操作對象)
第2步鏈式實現的方式:
<1> this的作用域鏈,jQuery的實現方式;【示例1】
<2> 返回對象本身, 同this的區別就是顯示返回鏈式對象;【示例2】
<3> 閉包返回對象通過調用覆蓋valueOf方法實現,副作用獲取結果需要調用valueOf;(此種方法適用于操作方法有相互依賴的情況下使用)【示例3】

示例1 根據一個人的年齡獲取其年齡段 在線效果

person.set(10).get(); // 我還是個少年
var Person = function() {};
Person.prototype.set = function (age){
    this.age = 10; 
    return this; //this調用位置決定其詞法作用域
}
Person.prototype.get = function (){
    var age = this.age;
    if(age < 6){
        return "我還是個寶寶";
    }else if(age < 18){
        return "我還是個少年";
    }else{
     //……
    }
}

var person = new Person();
person.set(10).get(); // "我還是個少年"

示例2 示例1的實現 在線效果

var person = {
    set: function (age){
        this.age = 10;  //this調用位置決定其詞法作用域
        return person;
    },
    get: function (){
        var age = this.age;
        if(age < 6){
            return "我還是個寶寶";
        }else if(age < 18){
            return "我還是個少年";
        }else{
         //……
        }
    }
} 

示例3 實現詞語接龍游戲拼接,依賴上次的拼接結果 胸有成竹 -> 竹報平安 -> 安富尊榮 在線效果

wordschain("胸有成竹")("竹報平安")("安富尊榮").valueOf()
function wordschain(word){
    var words = word;
    function chain(word){
        words += " -> " + word;
        return chain; //操作對象本身
    }
    // valueOf 對象原始值chain [了解更多][5]
    chain.valueOf = function(){
        return words;
    }
    return chain;
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89515.html

相關文章

  • 從0開始擼一個Promise(一)

    摘要:說白了,就是給聲明的添加一個包含空的對象,再由函數返回這個空。如此構成一個層層包裹的鏈。四首先本質是一個遞歸函數,結束條件是,即終止到未掛載對象的子為止。可以看到這個函數的作用就是根據屬性逐個觸發鏈中的或函數。 背景 Promise是一種非常實用的異步編程方案,本文對于Promise源碼的分析可以增進讀者對于Promise原理的理解,以后不再害怕異步編程,不用擔心callback he...

    MSchumi 評論0 收藏0
  • JavaScript 工作原理之四-事件循環異步編程的出現和 5 種更好的 async/await

    摘要:函數會在之后的某個時刻觸發事件定時器。事件循環中的這樣一次遍歷被稱為一個。執行完畢并出棧。當定時器過期,宿主環境會把回調函數添加至事件循環隊列中,然后,在未來的某個取出并執行該事件。 原文請查閱這里,略有改動。 本系列持續更新中,Github 地址請查閱這里。 這是 JavaScript 工作原理的第四章。 現在,我們將會通過回顧單線程環境下編程的弊端及如何克服這些困難以創建令人驚嘆...

    maochunguang 評論0 收藏0
  • Java面試通關要點匯總集

    摘要:本文會以引出問題為主,后面有時間的話,筆者陸續會抽些重要的知識點進行詳細的剖析與解答。敬請關注服務端思維微信公眾號,獲取最新文章。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 這里,筆者結合自己過往的面試經驗,整理了一些核心的知識清單,幫助讀者更好地回顧與復習 Java 服務端核心技術。本文會以引出問題為主,后面有時間的話,筆者陸續會抽些重要的知識點進...

    gougoujiang 評論0 收藏0
  • 2018年5月前端面試題

    摘要:在上家公司裸辭之后,經過一段時間休整,月中下旬面試了一些公司,由于本人框架使用的是,所以面試題涉及到框架的都是,現將面試題整理一下列舉常用的特性。事件冒泡以及事件捕獲。其他前端分頁和后端分頁優缺點。包含多個子節點及孫節點,遍歷。 在上家公司裸辭之后,經過一段時間休整,5月中下旬面試了一些公司,由于本人框架使用的是vue,所以面試題涉及到框架的都是vue,現將面試題整理一下: es6 ...

    wwolf 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<