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 相关文章推荐
JS 实现双色表格实现代码
Nov 24 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
Apr 15 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
node.js入门学习之url模块
Feb 25 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
通过vue刷新左侧菜单栏操作
Aug 06 Javascript
JavaScript实现网页动态生成表格
Nov 25 Javascript
详解js创建对象的几种方式和对象方法
Mar 01 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
vue的滚动条插件实现代码
2019/09/07 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
Python常用小技巧总结
2015/06/01 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python解释器安装教程的方法步骤
2020/07/02 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
金融专业个人求职信范文
2013/11/28 职场文书
家长学校实施方案
2014/03/15 职场文书
文体活动实施方案
2014/03/27 职场文书
创先争优承诺书范文
2014/03/31 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
三峡人家导游词
2015/01/31 职场文书
学习保证书怎么写
2015/02/26 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
解析MySQL binlog
2021/06/11 MySQL