我們正常封裝一個相容的綁定事件函數會這樣寫: 看起來沒什麼問題, 但是, 既然我們封裝了這樣一個函數, 那我們肯定會頻繁調用它, 每次調用都走一次if 判斷 , 性能就會降低, 那我們就要想一個辦法 , 只在第一次調用時判斷一次, 後面再次調用就不用判斷了, 這就是惰性函數的用法: 直接在函數內部重 ...
我們正常封裝一個相容的綁定事件函數會這樣寫:
function addEvent(dom, type, handle) { if (dom.addEventListener) { dom.addEventListener(type, handle, false) } else { dom.attachEvent('on' + type, handle) } }
看起來沒什麼問題, 但是, 既然我們封裝了這樣一個函數, 那我們肯定會頻繁調用它,
每次調用都走一次if 判斷 , 性能就會降低,
那我們就要想一個辦法 , 只在第一次調用時判斷一次, 後面再次調用就不用判斷了,
這就是惰性函數的用法:
function addEvent(dom, type, handle) { if (dom.addEventListener) { dom.addEventListener(type, handle, false); addEvent = function (dom, type, handle) { dom.addEventListener(type, handle, false); } } else { dom.attachEvent('on' + type, handle); addEvent = function (dom, type, handle) { dom.attachEvent('on' + type, handle); } } }
直接在函數內部重寫這個函數。