天天看點

JS程式設計建議——72:惰性載入函數

建議72:惰性載入函數

惰性載入函數主要解決的問題也是相容性,原理跟分支函數類似,下面是簡單的示例。

var addEvent = function(el, type, handle) {

}

從代碼上看,惰性載入函數也是在函數内部改變自身的一種方式,這樣在重複執行的時候就不會再進行相容性方面的檢測了。

惰性載入表示函數執行的分支僅會發生一次,即第一次調用的時候。在第一次調用的過程中,該函數會被覆寫為另一個按合适方式執行的函數,這樣任何對原函數的調用都不用再經過執行的分支了。其優點如下:

要執行的适當代碼隻有在實際調用函數時才執行。

盡管第一次調用該函數會因額外的第二個函數調用而稍微慢點,但後續的調用都會很快,因為避免了多重條件。

由于浏覽器之間的行為差異,多數JavaScript代碼包含了大量的if語句,将執行引導到正确的代碼中。

在下面惰性載入的createXHR()中,if語句的每個分支都會為createXHR()變量指派,有效覆寫了原有的函數,最後一步便是調用新賦函數。下次調用createXHR()的時候,就會直接調用被配置設定的函數,這樣就不用再次執行if語句。

function createXHR() {

每一次調用createXHR()時都要對浏覽器所支援的功能仔細檢查,這樣每次調用createXHR()時都要進行相同的測試就變得沒有必要了。減少if語句使其不必每一次都執行,代碼就會執行得快些。解決方案就是惰性載入的技巧。

如前面所述,if語句的每一個分支都會為createXHR變量指派,有效覆寫了原有函數。最後一步便是調用新賦函數,下次調用creatXHR()的時候就會直接調用被配置設定的函數,這樣就不用再次執行if語句。

繼續閱讀