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的Tooltip插件 qtip使用详细说明
Sep 08 Javascript
使用jquery插件实现图片延迟加载技术详细说明
Mar 12 Javascript
当某个文本框成为焦点时即清除文本框内容
Apr 28 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 Javascript
Javascript自定义事件详解
Jan 13 Javascript
Javascript网页抢红包外挂实现分享
Jan 11 Javascript
angular2模块和共享模块详解
Apr 08 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
Nov 12 Javascript
jQuery实现全选按钮
Jan 01 jQuery
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
第四节--构造函数和析构函数
2006/11/16 PHP
PHP Pear 安装及使用
2009/03/19 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
js字符编码函数区别分析
2008/06/05 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
vue组件与复用详解
2018/04/08 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
逃课上网检讨书
2014/02/20 职场文书
司考复习计划
2015/01/19 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
机关工会工作总结2015
2015/05/26 职场文书
单独二胎证明
2015/06/24 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
利用Python+OpenCV三步去除水印
2021/05/28 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python