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 相关文章推荐
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
May 24 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
vue写一个组件
Apr 09 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
Vue中props的详解
May 16 Javascript
Nuxt 项目性能优化调研分析
Nov 07 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 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
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
python单链表实现代码实例
2013/11/21 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python实现的config文件读写功能示例
2019/09/24 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
DNA测试:Orig3n
2019/03/01 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
幼儿园实习自我鉴定
2013/12/15 职场文书
土建工程师岗位职责
2014/06/10 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
医德医风自我评价2015
2015/03/03 职场文书
党员自我评价2015
2015/03/03 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js