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 各种浏览器下获得日期区别
Dec 22 Javascript
Javascript变量作用域详解
Dec 06 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
详解Javascript几种跨域方式总结
Feb 27 Javascript
echart简介_动力节点Java学院整理
Aug 11 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
微信小程序http连接访问解决方案的示例
Nov 05 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
Python脚本暴力破解栅栏密码
2015/10/19 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
Python中turtle库的使用实例
2019/09/09 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
养殖项目策划书范文
2014/01/13 职场文书
考试不及格的检讨书
2014/01/22 职场文书
四年级数学教学反思
2014/02/02 职场文书
给校长的建议书100字
2014/05/16 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs