JavaScript 函数式编程术语大全

函数式编程(FP)有许多优点,它也越来越流行了。然而,每个编程范式都有自己独特的术语,函数式编程也不例外。通过提供的这张术语表,希望使你学习函数式编程变得容易些。

示例以 JavaScript (ES2015) 方式呈现。 Why JavaScript?

这是一份 WIP; 欢迎随时 PR 😉

在适用的情况下,本文档使用的术语定义在 Fantasy Land spec继续阅读

Underscore.js-精巧而强大实用功能库

前言

从其他语言转向Javascript时,通常都会遇到一些困惑性问题。比如,Java中的HashMap在Javascript中如何实现?Javascript面向对象式编程如何实现继承?如何实现通用的iterator对集合对象做遍历?如何对Array实现快速排序?….

如果你真的可以自己实现这些功能,那么你的Javascript基础很扎实的!我很佩服你!但对于大部分人来说,这些基础功能应该是由底层API支持的,就像JDK一样。Underscore为我们提供了这样的一个实用工具包,而且它真的很实用!

只有你动手做了,你才能有收获。

目录

  1. Underscore介绍
  2. Underscore安装
  3. 集合部分:数组或对象
  4. 数组部分
  5. 函数部分
  6. 对象部分
  7. 实用功能
  8. 链式语法
  9. 字符串处理Underscore.String

继续阅读

Underscore.js 入门-常用方法介绍

Underscore.js是一个很精干的库,压缩后只有4KB。它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程。MVC框架Backbone.js就将这个库作为自己的工具库。除了可以在浏览器环境使用,Underscore.js还可以用于Node.js。

Underscor.js定义了一个下划线(_)对象,函数库的所有方法都属于这个对象。这些方法大致上可以分成:集合(collection)、数组(array)、函数(function)、对象(object)和工具(utility)五大类。

上篇介绍了Underscore.js 的几个核心功能:http://www.css88.com/archives/4728

这里介绍部分的常用方法,详细请API文档 http://www.css88.com/doc/underscore/

集合相关方法

Javascript语言的数据集合,包括两种结构:数组和对象。以下的方法同时适用于这两种结构。

数组处理

数组处理指的是对数组元素进行加工。

map方法对集合的每个成员依次进行某种操作,将返回的值依次存入一个新的数组。

_.map([1, 2, 3], function(num){ return num * 3; });
// [3, 6, 9]
_.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; });
// [3, 6, 9]

each方法与map类似,依次对数组所有元素进行某种操作,不返回任何值。 继续阅读

Underscore.js 入门

Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率。它本身与我们介绍的主题“Backbone”没有半毛钱的关系,因此你可以完全不理会“Backbone”的概念来学习它,或将它单独运用到任何一个页面。(另外,Underscore还可以被使用在Node.js运行环境。)

在学习Underscore之前,你应该先保存它的API地址,因为你将在以后经常访问它:
Underscore.js 1.7.0 中文文档(http://www.css88.com/doc/underscore/)

常用方法介绍:http://www.css88.com/archives/4784

从API中,你已经可以看出,Underscore没有任何复杂的结构和流程,它仅仅提供了一系列常用的函数。如果你将API中的方法从头至尾用一遍,你就会对它非常了解。

尽管如此,但我觉得还是有必要将一些重要的方法拿出来与大家讨论,它们十分重要,却在API中描述地还不够清楚。

1 Underscore对象封装

Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文中称“Underscore对象”)。

你可以通过调用一个Underscore对象的value()方法来获取原生的JavaScript数据,例如:

// 定义一个JavaScript内置对象  
var jsData = {  
    name : 'data'  
}  

// 通过_()方法将对象创建为一个Underscore对象  
// underscoreData对象的原型中包含了Underscore中定义的所有方法,你可以任意使用  
var underscoreData = _(jsData);  

// 通过value方法获取原生数据, 即jsData  
underscoreData.value();

继续阅读