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 相关文章推荐
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
Jul 08 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
angular学习之从零搭建一个angular4.0项目
Jul 10 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
vue 注册组件的使用详解
May 05 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 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维护文件系统
2006/10/09 PHP
一个php作的文本留言本的例子(三)
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
PHP中常用的转义函数
2014/02/28 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python进程管理工具supervisor使用实例
2014/09/17 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
春节联欢晚会主持词
2014/03/24 职场文书
大雁塔英文导游词
2015/02/10 职场文书
2015年个人思想总结
2015/03/09 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
考研英语辞职信
2015/05/13 职场文书
感谢师恩主题班会
2015/08/17 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python