国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)確的了


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

分享到微博請遵守國家法律
广宗县| 杨浦区| 怀来县| 南阳市| 平定县| 广河县| 盐源县| 昭苏县| 婺源县| 民丰县| 泰安市| 辛集市| 平谷区| 镇沅| 峨山| 墨江| 上杭县| 内江市| 和平区| 成都市| 清徐县| 永康市| 江源县| 民县| 绵竹市| 莆田市| 台东市| 晋中市| 遂川县| 惠水县| 临澧县| 常德市| 沧州市| 平泉县| 宜兰县| 清水县| 安岳县| 泸水县| 武陟县| 乡宁县| 通道|