91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS設計模式之惰性模式(二)

發布時間:2020-08-21 05:06:58 來源:腳本之家 閱讀:151 作者:kMacro 欄目:web開發

惰性模式:減少代碼每次執行時的重復性判斷,通過重新定義對象來避免原對象中的分支判斷,提高網站性能。

例如針對不同瀏覽器的事件注冊方法:

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
 dom.addEventListener(type, fn, false);
 }else if(dom.attachEvent){
 dom.attachEvent('on'+type, fn);
 }else{
 dom['on'+type] = fn;
 }
}

從上面的方法可以發現,每次為元素綁定事件時,都會進行檢測判斷,這是多余的,因為在同一瀏覽器中分支判斷結果是唯一的,不可能走不同的分支。

我們可以用惰性模式來解決這個問題,既然第一次調用該方法時已經判斷過了,那么就可以在第一次執行時根據判斷結果重新定義該方法。

惰性模式主要有兩種實現方法:

加載即執行:JavaScript文件加載時通過閉包執行對方法進行重新定義,在頁面加載時會消耗一定的資源。

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
return function(dom, type, fn){
 dom.addEventListener(type, fn, false);
 }
 }else if(dom.attachEvent){
return function(dom, type, fn){
 dom.attachEvent('on'+type, fn);
 }
 }else{
return function(dom, type, fn){
 dom['on'+type] = fn;
 }
 }
}();

惰性執行:第一次執行函數時在函數內部對其進行顯示重寫,最后調用重寫后的方法完成第一次方法調用。

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
AddEvent = function(dom, type, fn){
 dom.addEventListener(type, fn, false);
 }
 }else if(dom.attachEvent){
AddEvent = function(dom, type, fn){
 dom.attachEvent('on'+type, fn);
 }
 }else{
AddEvent = function(dom, type, fn){
 dom['on'+type] = fn;
 }
 }
 AddEvent(dom, type, fn);
};


加載即執行不同的是,JS文件加載完成后,惰性執行的函數還沒有被重新定義,當函數被首次調用時才會被重定義。這兩種惰性方式都避免了冗余的分支判斷。

惰性模式的應用場景非常廣泛,特別是當今瀏覽器種類繁多的現象,很多功能在不同瀏覽器中實現不一,為了兼容不同的瀏覽器,代碼中往往會有許多對不同瀏覽器的分支判斷,比如事件處理、XMLHttpRequest對象創建等,造成代碼臃腫冗余,惰性模式正好可以解決這種問題,提高代碼執行效率。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝丰县| 双峰县| 二连浩特市| 建始县| 阳春市| 长寿区| 崇阳县| 金平| 江北区| 宁化县| 乐亭县| 那曲县| 抚州市| 始兴县| 包头市| 上犹县| 富民县| 甘泉县| 巴彦淖尔市| 嘉鱼县| 泸州市| 普安县| 台南县| 阿图什市| 固安县| 泽普县| 庆阳市| 会宁县| 称多县| 华蓥市| 商河县| 江城| 蓝山县| 石家庄市| 临夏市| 建瓯市| 锡林浩特市| 永平县| 彩票| 吉安市| 祁阳县|