最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

懶人封裝(懶惰模式)

2023-03-28 13:12 作者:千鋒前端  | 我要投稿

●?本文旨在一些特殊的封裝上

●?一般會用于處理瀏覽器兼容性的封裝

●?但是看完會對你有一些啟發(fā)也說不定哦 O(∩_∩)O~

一段簡單的代碼

●?我們在封裝 ajax 請求的時候

●?基于原生 js 的 ajax 代碼, 如果考慮到瀏覽器兼容問題

●?那么我們一定會看到以下幾段代碼

開始第一次封裝

想到就做, 我們就來進(jìn)行一次封裝試試看

我這里并沒有寫完整, 只是簡單一個小示例

我們來分析一下這個事情

○?我們的判斷種類可能有很多種, 比如 A B C D 四種

●?代碼可能就變成了這個樣子

●?可能有的小伙伴會想到, 我改成 策略模式 封裝不就好了

我要說的不是這個問題

○?不管你改成什么模式封裝, 哪怕是起飛模式

○?如果你當(dāng)前需要匹配到的內(nèi)容是 D

○?那么每調(diào)用一次, 都會從 A 開始判斷一次

○?然后到達(dá) D

●?想象一下, 如果調(diào)用了 100 次, 那么每次的前三個判斷是不是都浪費(fèi)了呢

●?好像是這樣的

○?那我們是不是可以考慮換一個方式來搞一下


懶惰模式封裝這段代碼

●?我們能不能考慮一下, 我封裝完畢的代碼, 只有第一次調(diào)用的時候會判斷

●?后面調(diào)用的時候不在判斷了, 那么是不是會節(jié)省很多呢 ?

●?想到就做

○?原則就是多個事情依次完成

○?前一個成功了, 后面的不做了

○?只要成功過一次, 以后就不在嘗試了


1.? 把我們需要做的幾個事情放在幾個函數(shù)內(nèi)

●?這樣一來, 如果第一個能成功, 那么我們調(diào)用第一個函數(shù)就回得到對應(yīng)的 ajax 對象了

●?如果第一個不行, 我們就嘗試第二個


2.? 接下來我們把四個函數(shù)放在一個數(shù)組內(nèi), 遍歷依次執(zhí)行

●?只要找到一個合適的就行了

●?問題隨之而來了, 如果第一個不對, 那么會報錯

●?我的代碼就全部掛掉了


3.? 嘗試使用 try catch 解決問題

●?為了不讓我的代碼掛掉

●?我們改用 try catch 來解決問題

●?錯了也不需要做什么 , 直接下一次就好了

●?看上去挺好, 但是問題依舊沒有解決


4.? 單獨(dú)制作一個函數(shù)

●?我的原則就是, 讓這個函數(shù)第一次調(diào)用和第二次調(diào)用不是一個函數(shù)就好了

●?也就是我要在第一次調(diào)用完畢以后修改這個函數(shù)

●?看似沒有什么改變,但是之一第 28 行的代碼,有一個重寫 createXHR

●?這個是整個”惰性思想”的核心,也就是說,我只有在當(dāng)前瀏覽器中,第一次執(zhí)行 createXHR 的時候是這個函數(shù)

●?一旦找到一個合適的創(chuàng)建 ajax 對象的方法以后,那么從第二次執(zhí)行 createXHR 開始,就全部都是我們之前數(shù)組中的某一個函數(shù)了

●?再也不用循環(huán)判斷,而是直接用一種有效的方法創(chuàng)建一個 ajax 對象了

●?這個是一種 js 中的高級編程思想,如果理解不了,就用我們最開始寫的判斷的形式來進(jìn)行就可以,慢慢體會一段時間就能明白了


完整代碼

●?從此以后, 你就去隨便調(diào)用吧

●?只有第一次的時候會進(jìn)行判斷, 后面的時候都不會進(jìn)行判斷了

●?直接就能使用那個最準(zhǔn)確的了


懶人封裝(懶惰模式)的評論 (共 條)

分享到微博請遵守國家法律
铜鼓县| 西峡县| 东港市| 广灵县| 玉屏| 和龙市| 清丰县| 东明县| 东光县| 徐汇区| 河南省| 谢通门县| 南江县| 交口县| 东海县| 瑞昌市| 定远县| 缙云县| 于都县| 利川市| 泉州市| 永定县| 青浦区| 亳州市| 崇明县| 柘荣县| 宝清县| 双鸭山市| 藁城市| 客服| 阜康市| 梅州市| 普兰店市| 巴林右旗| 深水埗区| 南部县| 德安县| 得荣县| 闸北区| 阿合奇县| 凤翔县|