框架(framework)是一个框子--指其约束性,也是一个架子--指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

Web前端教程

框架这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。

在vue、react等框架大量应用之前,我们需要使用jQuery或者原生js来操作dom写代码,在用原生js进行事件绑定时,我们可以应用DOM2级绑定事件的方法,即:元素.addEventListener(),因为兼容性,还有:

元素.attachEvent()。所以我们需要封装成一个方法:

functionemit(element,type,func){

if(element.addEventListener){

element.addEventListener(type,func,false);

}elseif(element.attachEvent){

element.attachEvent('on'+type,func);

}else{//如果不支持DOM2级事件

element['on'+type]=func;

}

}

这个时候,如果一个元素需要通过一个行为添加多个点击事件,如:

emit(div,'click',fn1);

emit(div,'click',fn2);

在第一次给div进行fn1事件绑定时,已经知道浏览器可以执行哪种绑定方式,执行绑定fn2时,就没有必要再次进行判断,那么代码可以进行修改:

functionemit(element,type,func){

if(element.addEventListener){

emit=function(element,type,func){

element.addEventListener(type,func,false);

};

}elseif(element.attachEvent){

emit=function(element,type,func){

element.attachEvent('on'+type,func);

};

}else{

emit=function(element,type,func){

element['on'+type]=func;

};

}

emit(element,type,func);

}

也就是说,我们在进行第一次判断后,对函数进行重新定义,这样在之后再进行绑定时不需要再进行判断,从性能角度讲,虽然创建了闭包,但由于后续进行多次同一个的判断。

这就是函数的惰性思想,对于同一个判断,我们只需要进行一次就好。

框架(Framework)是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。

框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节。

以上是酷仔今日整理的“web前端教程:JS高阶编程技巧-惰性函数”一文,希望为正在学习Web前端的同学提供参考。

原生js循环展示dom_web前端教程:JS高阶编程技巧-惰性函数相关推荐

  1. 原生js循环展示dom_为什么说JS的DOM操作很耗性能

    想问这样的问题,其实是自己心中没有个谱,一直用 js 计算性能来衡量 浏览器dom 操作性能.js性能和浏览器性能其实是两码事. 这个问题很抽象,它里面涉及挺多个小的知识点. 重申一点,js 操作 D ...

  2. java web js加版本号_[Java教程]js 比较版本号(一)

    [Java教程]js 比较版本号(一) 0 2016-07-03 15:00:13 最近群了有人问如何比较版本号,我好奇的试了一下. 比较版本号,怎么办?懒人的方法是借鉴,先查网上的资料,看看有木有直 ...

  3. js最简单的几个特效_高阶函数不会用?教你JS中最实用的几个高阶函数用法

    不废话,先来看下什么是高阶函数 高阶函数 函数可以作为参数传递 函数可以作为返回值输出 函数作为参数传递 回调函数 在ajax异步请求的过程中,回调函数使用的非常频繁 在不确定请求返回的时间时,将ca ...

  4. map 长度_Python实用教程系列——高阶函数Map、Filter、Reduce

    点击上方蓝色文字关注我们吧 有你想要的精彩 作者 | 那个百分十先生出品 | Python知识学堂 上次推文我们介绍了python中的<Logging日志模块>的相关知识,这次推文我们将学 ...

  5. 【高阶循环谱】基于FPGA的高阶循环谱的调制识别算法开发

    1.软件版本 matlab2013b,quartusii12.1 2.本算法理论知识 参考文献<基于高阶循环累积量的 OFDM 子载波盲估计> 3.部分源码 `timescale 1ns ...

  6. 原生js循环展示dom_【前端面试】用一道题讲 js 的事件循环队列

    昨天去面了滴滴,一口气面了三面,考了 promise 和事件循环.之前的猿辅导也考察了这些,几乎所有的大厂中厂都一定会考原生 js 的事件循环队列. 今天,我把昨天考察的原题拿出来分析一下. setT ...

  7. js循环解析html标签,riot.js教程【六】循环、HTML元素标签

    循环 可以通过each属性来达到标签循环,如下: { title } this.items = [ { title: 'First item', done: true }, { title: 'Sec ...

  8. js基础到精通全面教程--JS教程(转载)--推荐

    基础知识:HTML JavaScript就这么回事1:基础知识 1 创建脚本块 1: <script language="JavaScript">   2: JavaS ...

  9. Web 图集应用,属于非游戏类的图集/雪碧图对象/JS雪碧图/前端图集/JS图集

    在非游戏领域其实也是存在很多细小的图标需求的.但是找遍全网却没有方便简洁的图集插件. 所以在此特写一个属于前端的图集插件,该插件使用非常简单. 首先准备需要打成图集的小图标若干 再使用国际标准的图集打 ...

最新文章

  1. PHP提交表单到当前页动作检测
  2. java使用JDBC连接数据库的几种方式
  3. java并发包系列---LockSupport
  4. leetcode39. 组合总和
  5. Python进阶(二)Python中的类继承、封装、多态使用方法
  6. 达芬奇调色软件:DaVinci Resolve Studio 16 Mac
  7. 波动率模型:现货、期货及期货期权
  8. 均值(average)与期望(mean)
  9. 【存储】Android中的8种数据存储方式
  10. elementUI表格合并行
  11. 百度脑图(kityminder)优化
  12. 古体字与简体字对照表_常用繁体字与简体字对照表
  13. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
  14. FTP服务器传输文件
  15. 信标杂谈:外卖骑手和微信摇一摇的故事
  16. 代码规范检查工具+代码规范生成工具
  17. 第三十七章 SQL函数 CURRENT_TIMESTAMP
  18. 可编程中断控制器8259A
  19. 【181213】VC++个人考勤软件源代码
  20. CSDN论坛表情指南

热门文章

  1. 短文本关键词提取算法RAKE TextRank及改进
  2. 取消word里的全部超级链接
  3. [摘录]高效人士七习惯—知己知彼原则
  4. 跟我学习Spring Security--在线宠物商店开发(二)
  5. vue下载pdf、word、excel、png图片
  6. 不懂运营思维模型,谈何升职加薪?思维导图带你职场闯关
  7. Win7延迟90秒启动exe文件
  8. 《世界棒球》:KBO联盟
  9. Android自定义View之(一)View绘制流程详解——向源码要答案
  10. WOW游戏世界浏览器