underscore是很是好用的封裝庫,大小隻有4KB,大多插件都是以underscore爲基礎;html
underscore分5大部分;集合;數組;函數;對象;工具數組
集合:集合就是僞數組,雖然長的和數組同樣,可是不存在數組的屬性和方法;dom
假設咱們須要數組的方法,他們沒有,就須要人爲的封裝,還須要考慮兼容性,太麻煩了;異步
underscore就解決了這個問題; '_'爲他的調用對象函數
1._.each(a,function(ele,index)) each的第一個參數是集合自己,第二個參數爲函數,函數裏兩個參數(第一個參數:裏面的元素,第二個參數:就是元素索引)工具
2._.map() 用法同_each() 可是他能夠對裏面元素進行加工,返回處理後的新數組;this
3._.find(arr,function(){}) 找到第一個知足條件的元素,沒有爲undefined;url
4._.filter() 找到全部知足條件的元素,返回新數組;插件
集合自己就是數組,因此數組也能夠運用集合的方法;rest
數組:
1._.first() 返回數組第一個元素,傳遞參數n 返回從第一個到第n個參數;
2._.last() 返回數組中最後一個元素,傳遞參數n 返回從最後參數到n個參數;
3._.initial() 刪除數組中最後一個元素,傳遞參數n 返回往前刪除n個參數;
4._.rest() 刪除數組中第一個參數,傳遞參數n,返回從前日後刪n個參數;
5._.Object() 將數組轉爲對象,無論是幾維;
函數:
1._.bind(fn,obj) 綁定完以後,返回綁定完後的函數fn,裏面的this就是obj;
2._.delay(fn,5) 等待幾秒後執行裏面的函數;
3._.once() 這個函數只能調用一次,不準多個調用;
4._.after(n,fn) 在運行n次以後纔會執行fn函數,(要保證,全部的異步都完成以後才執行)
5._before(n,fn) 建立一個函數fn調用不超過n次,若是超過n次,就再也不執行,返回最後一個結果,並被記住;
對象:
1._.keys() 檢索obj中全部可枚舉的屬性
2._.allKeys() 將對象上屬性和他原型上的屬性,列舉出來;
3._.values() 返回全部的屬性值;
4._.extend() 將n個對象合併到一個對象上;
5._clone() 淺拷貝;
工具:
1._times(n.fn) 函數調用n次,函數有個形參,返回爲索引;
2._.random() 返回最大值和最小值的隨機整數,若是1個參數,返回0到那個參數的隨機數;
3._.mixin() 若是你有特別好的方法,能夠經過這個方法追加到 Underscore.js(1.9.1) 中文文檔 裏面哦;
4._.now() 時間戳;
5._template() 模板,預編譯模板;
這裏只是將部分計較重要的方法和你們進行了介紹,
詳情請看 https://www.html.cn/doc/underscore/#each