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 相关文章推荐
使用Firebug对js进行断点调试的图文方法
Apr 02 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
javascript模拟php函数in_array
Apr 27 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
js弹出窗口返回值的简单实例
May 28 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
Sep 30 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 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
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
css图片自适应大小
2007/11/28 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
react路由配置方式详解
2017/08/07 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python实现去除代码前行号的方法
2015/03/10 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python 统计字数的思路详解
2018/05/08 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
Python 函数list&read&seek详解
2019/08/28 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
python math模块的基本使用教程
2021/01/16 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
鲁迅故里导游词
2015/02/05 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
教学督导岗位职责
2015/04/10 职场文书
辩护词范文大全
2015/05/21 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
九年级英语教学反思
2016/02/15 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js