灏天阁

惰性模式

· Yin灏
/**
 * 减少每次代码执行时的重复性大分支判断,通过对对象重定义来屏蔽原对象中的分支判断。
 */
/**
 * 加载即执行
 */
// 添加绑定事件方法 on
A.on = (function (dom, type, fn) {
  if (document.addEventListener) {
    return function (dom, type, fn) {
      dom.addEventListener(type, fn, false);
    };
  } else if (document.attachEvent) {
    return function (dom, type, fn) {
      dom.attachEvent("on" + type, fn);
    };
  } else {
    return function (dom, type, fn) {
      dom["on" + type] = fn;
    };
  }
})();

console.log(A.on);

// 页面加载时就去执行可能真的会消耗一些资源。

/**
 * 惰性执行
 */
A.on = function (dom, type, fn) {
  if (document.addEventListener) {
    A.on = function (dom, type, fn) {
      dom.addEventListener(type, fn, false);
    };
  } else if (document.attachEvent) {
    A.on = function (dom, type, fn) {
      dom.attachEvent("on" + type, fn);
    };
  } else {
    A.on = function (dom, type, fn) {
      dom["on" + type] = fn;
    };
  }
  // 执行重定义 on 方法
  A.on(dom, type, fn);
};

A.on(document.body, "click", function () {
  alert(11);
});

- Book Lists -