咱們正常封裝一個兼容的綁定事件函數會這樣寫:dom
function addEvent(dom, type, handle) { if (dom.addEventListener) { dom.addEventListener(type, handle, false) } else { dom.attachEvent('on' + type, handle) } }
看起來沒什麼問題, 可是, 既然咱們封裝了這樣一個函數, 那咱們確定會頻繁調用它,函數
每次調用都走一次if 判斷 , 性能就會下降, 性能
那咱們就要想一個辦法 , 只在第一次調用時判斷一次, 後面再次調用就不用判斷了, spa
這就是惰性函數的用法:code
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); } } }
直接在函數內部重寫這個函數。blog