JavaScript惰性函數(shù)

背景

在開發(fā)過程中,有時候需要對瀏覽器環(huán)境進行檢測,比如封裝一個AJAX函數(shù)的時候需要寫一個函數(shù)進行檢測,但是常規(guī)的寫法有點累贅了,會檢測很多遍,但是瀏覽器環(huán)境是固定不變的,檢測只需要檢測一遍.這樣就會造成每次調(diào)用這個函數(shù)的時候瀏覽器都會浪費太多時間去再檢測一次.這時候就應(yīng)該用到惰性函數(shù)來解決這個問題

惰性函數(shù)

惰性載入表示函數(shù)執(zhí)行的分支只會在函數(shù)第一次掉用的時候執(zhí)行,在第一次調(diào)用過程中,該函數(shù)會被覆蓋為另一個按照合適方式執(zhí)行的函數(shù),這樣任何對原函數(shù)的調(diào)用就不用再經(jīng)過執(zhí)行的分支了。
下面看一段JS代碼:

function createXHR() {
    var xhr;
    if (typeof XMLHttpRequest != 'undefined') {
        xhr = new XMLHttpRequest();
        createXHR = function() {
            return new XMLHttpRequest();
        }
    } else {
        try {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
            createXHR = function() {
                return new ActiveXObject("Msxml2.XMLHTTP");
            }
        } catch (e) {
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
                createXHR = function() {
                    return new ActiveXObject("Microsoft.XMLHTTP");
                }
            } catch (e) {
                createXHR = function() {
                    return null;
                }
            }
        }
    }
    return xhr
}

什么意思呢?就是說這個函數(shù)在執(zhí)行第一次的時候正常判斷,只是條件成立的時候會重新改寫這個函數(shù),并返回相應(yīng)的結(jié)果,這樣下次調(diào)用的時候就不會浪費時間再去判斷相關(guān)環(huán)境了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設(shè)計作者)寫的最佳實踐、性能優(yōu)化類的書...
    undefinedR閱讀 2,234評論 0 30
  • 今天兒子中考了,此時的兒子,在考場中,我無法像平時他做作業(yè)時一樣,過去做個小小打擾,只能在他出門時,說:“媽媽準備...
    飄著的云閱讀 396評論 0 0
  • 《邊城》:一道讓人難忘的清香小菜 每逢放假回家,母親都會煮一桌好菜,我吃了十多年,最鐘愛的還是她炒的一盤青菜。我家...
    荏苒幾盈虛閱讀 834評論 0 8
  • 滿足,有夢,更是一種美麗。端坐在筆者面前的這一位福建男孩有些靦腆地說,正如自己這些年來的經(jīng)歷,簡單里,也有些風(fēng)過無...
    飄飖若雪閱讀 167評論 0 0

友情鏈接更多精彩內(nèi)容