惰性载入函数
惰性载入函数就是当第一次根据条件执行函数后,在第二次调用函数时,就不再检测条件,直接执行函数。我们可以在第一次条件判断的时候,在满足判断条件的分支中覆盖掉所调用的函数。
实现方式
function addHandler(element, type, handler) {
if (element.addEventListener) {
addHandler = function (element, type, handler) {
element.addEventListener(type, handler, false)
}
} else if (element.attachEvent) {
addHandler = function (element, type, handler) {
element.attachEvent("on" + type, handler)
}
} else {
addHandler = function (element, type, handler) {
element["on" + type] = handler
}
}
// 保证首次调用能正常执行监听
return addHandler(element, type, handler)
}
也可以使用IIFE来实现惰性载入
const addHandler = (function () {
if (document.addEventListener) {
return function (element, type, handler) {
element.addEventListener(type, handler, false)
}
} else if (document.attachEvent) {
return function (element, type, handler) {
element.attachEvent("on" + type, handler)
}
} else {
return function (element, type, handler) {
element["on" + type] = handler
}
}
})()