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 相关文章推荐
javascript 原型模式实现OOP的再研究
Apr 09 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
php实现三级级联下拉框
2016/04/17 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
用JS实现的一个include函数
2007/07/21 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python中%r和%s的详解及区别
2017/03/16 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python三大神器之fabric使用教程
2019/06/10 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
医学专业五年以上个人求职信
2013/12/03 职场文书
教师节感谢信
2015/01/22 职场文书
考试作弊检讨书
2015/01/27 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
解决MySQL报“too many connections“错误
2022/04/19 MySQL