underscore下載地址
https://github.com/jashkenas/underscore
underscore.js
函數(shù)式編程
'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]
現(xiàn)在問題來了,Array有map()和filter()方法絮吵,可是Object沒有這些方法崔拥。此外螟加,低版本的瀏覽器例如IE6~8也沒有這些方法,怎么辦?
方法一彻磁,自己把這些方法添加到Array.prototype中哥桥,然后給Object.prototype也加上mapObject()等類似的方法辙浑。
方法二,直接找一個成熟可靠的第三方開源庫拟糕,使用統(tǒng)一的函數(shù)來實現(xiàn)map()判呕、filter()這些操作倦踢。
我們采用方法二,選擇的第三方庫就是underscore侠草。
正如jQuery統(tǒng)一了不同瀏覽器之間的DOM操作的差異辱挥,讓我們可以簡單地對DOM進行操作,underscore則提供了一套完善的函數(shù)式編程的接口边涕,讓我們更方便地在JavaScript中實現(xiàn)函數(shù)式編程晤碘。
jQuery在加載時,會把自身綁定到唯一的全局變量$上功蜓,underscore與其類似园爷,會把自身綁定到唯一的全局變量_上,這也是為啥它的名字叫underscore的原因式撼。
用underscore實現(xiàn)map()操作如下:
'use strict';
_.map([1, 2, 3], (x) => x * x); // [1, 4, 9]
underscore的map()還可以作用于Object:
'use strict';
_.map({ a: 1, b: 2, c: 3 }, (v, k) => k + '=' + v); // ['a=1', 'b=2', 'c=3']