JavaScript之underscore_动力节点Java学院整理


Posted in Javascript onJuly 03, 2017

JavaScript是函数式编程语言,支持高阶函数和闭包。函数式编程非常强大,可以写出非常简洁的代码。例如Array的map()和filter()方法:

'use strict';
var a1 = [1, 4, 9, 16];
var a2 = a1.map(Math.sqrt); // [1, 2, 3, 4]
var a3 = a2.filter((x) => { return x % 2 === 0; }); // [2, 4]

现在问题来了,Array有map()和filter()方法,可是Object没有这些方法。此外,低版本的浏览器例如IE6~8也没有这些方法,怎么办?

方法一,自己把这些方法添加到Array.prototype中,然后给Object.prototype也加上mapObject()等类似的方法。

方法二,直接找一个成熟可靠的第三方开源库,使用统一的函数来实现map()、filter()这些操作。

我们采用方法二,选择的第三方库就是underscore。

正如jQuery统一了不同浏览器之间的DOM操作的差异,让我们可以简单地对DOM进行操作,underscore则提供了一套完善的函数式编程的接口,让我们更方便地在JavaScript中实现函数式编程。

jQuery在加载时,会把自身绑定到唯一的全局变量$上,underscore与其类似,会把自身绑定到唯一的全局变量_上,这也是为啥它的名字叫underscore的原因。

用underscore实现map()操作如下:

'use strict';
_.map([1, 2, 3], (x) => x * x); // [1, 4, 9]

咋一看比直接用Array.map()要麻烦一点,可是underscore的map()还可以作用于Object:

'use strict';
_.map({ a: 1, b: 2, c: 3 }, (v, k) => k + '=' + v); // ['a=1', 'b=2', 'c=3']
Javascript 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
登陆成功后自动计算秒数执行跳转
Jan 23 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
基于BootStrap实现局部刷新分页实例代码
Aug 08 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 Javascript
React组件生命周期详解
Jul 03 #Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 #Javascript
Swiper实现轮播图效果
Jul 03 #Javascript
jQuery实现点击关注和取消功能
Jul 03 #jQuery
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
Jul 03 #Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 #Javascript
Bootstrap按钮组实例详解
Jul 03 #Javascript
You might like
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
python getpass实现密文实例详解
2019/09/24 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
善意的谎言事例
2014/02/15 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
协会周年庆活动方案
2014/08/26 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
授权委托书
2015/01/28 职场文书
2019消防宣传标语!
2019/07/10 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android