jQuery統一了不一樣瀏覽器之間的DOM操做的差別,讓咱們能夠簡單地對DOM進行操做,而underscore則提供了一套完善的函數接口,讓咱們更方便地在JavaScript中實現函數式編程。html
Underscore.js是一個很精幹的庫,壓縮後只有6KB,它提供了100多個函數,彌補了js標準庫的不足,包括經常使用的: map, filter, invoke,函數綁定, JavaScript模板功能,建立快速索引, 強類型相等測試等等。
java
這些方法大體上能夠分紅:集合類操做函數(collection)、數組操做函數(array)、高階函數(function)、對象操做函數(object)和工具函數(utility)五大類。編程
jQuery在加載時,會把自身綁定到惟一的全局變量$
上,underscore與其相似,會把自身綁定到惟一的全局變量_
上,這也是爲啥它的名字叫underscore(下劃線)的緣由。數組
Underscor.js定義了一個下劃線(_)對象,函數庫的全部方法都屬於這個對象。瀏覽器
underscore爲集合類對象提供了一致的接口。集合類是指Array和Object,暫不支持Map和Set。函數式編程
underscore爲Array
提供了許多工具類方法,能夠更方便快捷地操做Array
。函數
提供了大量JavaScript自己沒有的高階函數。工具
在不一樣的運行環境下,javaScript函數內部的變量所在的上下文是不一樣的。這種特性會給程序帶來不肯定性,爲了解決這個問題,Underscore.js提供了兩個方法,用來給函數綁定上下文。測試
_.bind(function, object, *arguments)
綁定函數 function 到對象 object 上, 也就是不管什麼時候調用函數, 函數裏的 this 都指向這個 object.
不管什麼時候調用該函數, 函數裏的 this 都指向這個 object。this
提供了大量針對Object的函數。
五:實用功能
六:Chaining鏈式語法