前端性能优化(三)——惰性函数

2017-05-09  本文已影响0人  任无名F

惰性函数表示,此函数有很多个分支判断,但这些分支判断只会在第一次调用时执行,执行后会修改此函数,再次调用时无须判断。

这种函数的应用场景之一是在兼容性判断时,例如:

// 兼容的事件监听函数,非惰性
function addEvent(event, el, handler) {
  if(el.addEventListener) {
    el.addEventListener(event, handler);
  } else if (el.attachEvent) {
    el.attachEvent("on"+event, handler);
  } else {
    el["on"+event] = handler;
  }
}
// 兼容的事件监听函数,惰性
function addEvent(event, el, handler) {
  if(el.addEventListener) {
    addEvent = function(event, el, handler) {
      el.addEventListener(event, handler);
    }
  } else if (el.attachEvent) {
    addEvent = function(event, el, handler) {
      el.attachEvent("on"+event, handler);
    }
  } else {
    addEvent = function(event, el, handler) {
      el["on"+event] = handler;
    }
  }
  return addEvent(event, el, handler);
}

还有在单例模式中的例子:

function singleton() {
  // 单例
  let instance = this;
  // 属性
  this.name = "singleton";
  // 重写构造函数,用闭包实现单例
  singleton = function() {
    return singleton;
  }
}
惰性函数的特点
  1. 应用频繁,如果只调用一次,则失去了意义
  2. 复杂的分支判断,若无分支判断,也失去了意义
  3. 环境固定,函数中的判断依据不会变化,所以只需要首次调用时判断即可
上一篇 下一篇

猜你喜欢

热点阅读