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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
JavaScript 获取事件对象的注意点
Jul 29 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
javascript 文章截取部分无损html显示实现代码
May 04 Javascript
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
php无序树实现方法
2015/07/28 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
JavaScript对象的property属性详解
2014/04/01 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python类的多重继承问题深入分析
2014/11/09 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python-openCV开运算实例
2020/07/05 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
团日活动总结怎么写
2014/06/25 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
财务部岗位职责范本
2015/04/14 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
新年祝酒词大全
2015/08/11 职场文书
安全生产培训心得体会
2016/01/18 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server