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 相关文章推荐
用于table内容排序
Jul 21 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
Mar 28 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
Jul 13 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
Dec 17 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
浅谈angularJS2中的界面跳转方法
Aug 31 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 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中使用Oracle数据库(5)
2006/10/09 PHP
PHP的面试题集
2006/11/19 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP实现事件机制的方法
2015/07/10 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
项目经理岗位职责
2013/11/11 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
高级工程师英文求职信
2014/03/19 职场文书
质量保证书范本
2014/04/29 职场文书
九一八事变演讲稿
2014/09/05 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Docker下安装Oracle19c
2022/04/13 Servers
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python