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中出现乱码的处理心得
Dec 24 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
通过设置CSS中的position属性来固定层的位置
Dec 14 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
微信小程序 弹窗自定义实例代码
Mar 08 Javascript
JavaScript中最常用的10种代码简写技巧总结
Jun 28 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 Javascript
详解ES6 扩展运算符的使用与注意事项
Nov 12 Javascript
用vue设计一个日历表
Dec 03 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
Protoss兵种介绍
2020/03/14 星际争霸
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
python如何通过twisted实现数据库异步插入
2018/03/20 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
自我鉴定范文200字
2013/10/02 职场文书
称象教学反思
2014/02/03 职场文书
《学会合作》教学反思
2014/04/12 职场文书
道歉短信大全
2015/05/12 职场文书
飞越疯人院观后感
2015/06/09 职场文书
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android