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 相关文章推荐
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
ExtJS 入门
Oct 29 Javascript
Javascript中typeof 用法小结
May 12 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
小程序云开发实战小结
Oct 25 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 Javascript
Echarts实现多条折线可拖拽效果
Dec 19 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
基于php判断客户端类型
2016/10/14 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
python logging.info在终端没输出的解决
2020/05/12 Python
用python批量移动文件
2021/01/14 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
银河香水:Galaxy Perfume
2019/03/25 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
新电JAVA笔试题目
2014/08/31 面试题
心理健康心得体会
2014/01/02 职场文书
开场白怎么写
2015/06/01 职场文书
总经理年会致辞
2015/07/29 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
win10清理dns缓存
2022/04/19 数码科技