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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
使用js显示当前时间示例
Mar 02 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
jQuery实现简单的日期输入格式化控件
Mar 12 Javascript
探究JavaScript函数式编程的乐趣
Dec 14 Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
Jan 05 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
JavaScript中的回调函数实例讲解
Jan 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
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
详解vue axios用post提交的数据格式
2018/08/07 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
关于Python的一些学习总结
2018/05/25 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python使用folium excel绘制point
2019/01/03 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Django url 路由匹配过程详解
2021/01/22 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
《童趣》教学反思
2014/02/19 职场文书
个人事迹材料范文
2014/12/29 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
详解Nginx 工作原理
2021/03/31 Servers
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android