美文网首页
前端性能优化(三)——惰性函数

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

作者: 任无名F | 来源:发表于2017-05-09 18:10 被阅读0次

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

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

// 兼容的事件监听函数,非惰性
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. 环境固定,函数中的判断依据不会变化,所以只需要首次调用时判断即可

相关文章

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

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

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • 性能优化惰性函数

    例子 可以看出方式是, 在功能内部重写一次函数. 函数内部不用var 可以重写 父级和全局变量,其次,也可以用这...

  • 前端性能优化(上)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 为什么要进行前端性能...

  • 前端性能优化之:函数防抖与函数节流

    前言 函数防抖和函数节流是在前端性能优化中老生常谈的话题,也是各位前端的童鞋必须要掌握的性能优化手段。今天胡哥为大...

  • 前端面试必问及加分点---性能优化篇

    如何进行网站性能优化 你有用过哪些前端性能优化的方法? 谈谈性能优化问题 代码层面的优化 前端性能优化最佳实践

  • 前端性能优化

    对于前端的性能优化,主要有分为加载优化和性能优化。在Google官方文档中,给出了性能优化有哪些好处。前端优化的最...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • 关于前端性能优化问题详解

    关于前端性能优化问题详解 出处:http://segmentfault.com/blogs 前端性能优化指南 AJ...

网友评论

      本文标题:前端性能优化(三)——惰性函数

      本文链接:https://www.haomeiwen.com/subject/fzditxtx.html