摘要:一鏈?zhǔn)骄幋a好處同一對象多次其屬性或方法的時候,我們需要多次書寫對象進(jìn)行或操作鏈?zhǔn)秸{(diào)用是一種簡化此過程的一種編碼方式,使代碼簡潔易讀。
一、鏈?zhǔn)骄幋a
好處
同一對象多次其屬性或方法的時候,我們需要多次書寫對象進(jìn)行“.” 或 () 操作;鏈?zhǔn)秸{(diào)用是一種簡化此過程的一種編碼方式,使代碼簡潔、易讀。
舉個栗子(深刻不是很貼切的):日常餐廳取餐,通常我們一次拿取想要的食物一起結(jié)賬,如果每樣食物要分開取餐結(jié)賬估計內(nèi)心的草泥馬要躁動起來了。
常用場景
#jQuery的Dom操作 $("select").on("click", callback) .on("change", callback);
#gulp編譯 gulp.src("/path/to/**.less") .pipe(less()) .pipe(cssmin())
(廢話不多說,切入正題…… )
二、鏈?zhǔn)骄幋a的原理
鏈?zhǔn)秸{(diào)用原理就是作用域鏈;實(shí)現(xiàn)需要做的工作;
對象方法的處理 (操作方法)
處理完成返回對象的引用(操作對象)
第2步鏈?zhǔn)綄?shí)現(xiàn)的方式:
<1> this的作用域鏈,jQuery的實(shí)現(xiàn)方式;【示例1】
<2> 返回對象本身, 同this的區(qū)別就是顯示返回鏈?zhǔn)綄ο螅弧臼纠?】
<3> 閉包返回對象通過調(diào)用覆蓋valueOf方法實(shí)現(xiàn),副作用獲取結(jié)果需要調(diào)用valueOf;(此種方法適用于操作方法有相互依賴的情況下使用)【示例3】
示例1 根據(jù)一個人的年齡獲取其年齡段 在線效果
person.set(10).get(); // 我還是個少年
var Person = function() {}; Person.prototype.set = function (age){ this.age = 10; return this; //this調(diào)用位置決定其詞法作用域 } 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的實(shí)現(xiàn) 在線效果
var person = { set: function (age){ this.age = 10; //this調(diào)用位置決定其詞法作用域 return person; }, get: function (){ var age = this.age; if(age < 6){ return "我還是個寶寶"; }else if(age < 18){ return "我還是個少年"; }else{ //…… } } }
示例3 實(shí)現(xiàn)詞語接龍游戲拼接,依賴上次的拼接結(jié)果 胸有成竹 -> 竹報平安 -> 安富尊榮 在線效果
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; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89515.html
摘要:說白了,就是給聲明的添加一個包含空的對象,再由函數(shù)返回這個空。如此構(gòu)成一個層層包裹的鏈。四首先本質(zhì)是一個遞歸函數(shù),結(jié)束條件是,即終止到未掛載對象的子為止。可以看到這個函數(shù)的作用就是根據(jù)屬性逐個觸發(fā)鏈中的或函數(shù)。 背景 Promise是一種非常實(shí)用的異步編程方案,本文對于Promise源碼的分析可以增進(jìn)讀者對于Promise原理的理解,以后不再害怕異步編程,不用擔(dān)心callback he...
摘要:函數(shù)會在之后的某個時刻觸發(fā)事件定時器。事件循環(huán)中的這樣一次遍歷被稱為一個。執(zhí)行完畢并出棧。當(dāng)定時器過期,宿主環(huán)境會把回調(diào)函數(shù)添加至事件循環(huán)隊(duì)列中,然后,在未來的某個取出并執(zhí)行該事件。 原文請查閱這里,略有改動。 本系列持續(xù)更新中,Github 地址請查閱這里。 這是 JavaScript 工作原理的第四章。 現(xiàn)在,我們將會通過回顧單線程環(huán)境下編程的弊端及如何克服這些困難以創(chuàng)建令人驚嘆...
摘要:本文會以引出問題為主,后面有時間的話,筆者陸續(xù)會抽些重要的知識點(diǎn)進(jìn)行詳細(xì)的剖析與解答。敬請關(guān)注服務(wù)端思維微信公眾號,獲取最新文章。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 這里,筆者結(jié)合自己過往的面試經(jīng)驗(yàn),整理了一些核心的知識清單,幫助讀者更好地回顧與復(fù)習(xí) Java 服務(wù)端核心技術(shù)。本文會以引出問題為主,后面有時間的話,筆者陸續(xù)會抽些重要的知識點(diǎn)進(jìn)...
摘要:在上家公司裸辭之后,經(jīng)過一段時間休整,月中下旬面試了一些公司,由于本人框架使用的是,所以面試題涉及到框架的都是,現(xiàn)將面試題整理一下列舉常用的特性。事件冒泡以及事件捕獲。其他前端分頁和后端分頁優(yōu)缺點(diǎn)。包含多個子節(jié)點(diǎn)及孫節(jié)點(diǎn),遍歷。 在上家公司裸辭之后,經(jīng)過一段時間休整,5月中下旬面試了一些公司,由于本人框架使用的是vue,所以面試題涉及到框架的都是vue,現(xiàn)將面試題整理一下: es6 ...
閱讀 733·2021-11-23 09:51
閱讀 2430·2021-10-11 11:10
閱讀 1299·2021-09-23 11:21
閱讀 1091·2021-09-10 10:50
閱讀 882·2019-08-30 15:54
閱讀 3326·2019-08-30 15:53
閱讀 3287·2019-08-30 15:53
閱讀 3186·2019-08-29 17:23