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的为attr添加id title等效果的实现代码
Apr 20 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
采用call方式实现js继承
May 20 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
javascript实现雪花飘落效果
Aug 19 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 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 set_time_limit()函数的使用详解
2013/06/05 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
Document 对象的常用方法
2009/07/31 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
18岁生日感言
2014/01/12 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
绿色小区申报材料
2014/08/22 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
校友回访母校寄语
2015/02/26 职场文书
义诊活动通知
2015/04/24 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
暑期工社会实践报告
2015/07/13 职场文书
2016年国陪研修感言
2015/11/18 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
详解SQL报错盲注
2022/07/23 SQL Server