標籤:java os strong io art for
Underscore 簡介
Underscore 是一個JavaScript實用庫,提供了類似Prototype.js的一些功能,但是沒有繼承任何JavaScript內建對象。它彌補了部分jQuery沒有實現的功能,同時又是Backbone.js必不可少的部分。
Underscore提供了80多個函數,包括常用的: map, select, invoke — 當然還有更多專業的輔助函數,如:函數綁定, JavaScript模板功能, 強型別相等測試, 等等. 在新的瀏覽器中, 有許多函數如果瀏覽器本身直接支援,將會採用原生的,如 forEach, map, reduce, filter, every, some 和 indexOf.
個人感受
Underscore 是一個我堅持看完的js原始碼,他簡單、易懂、實用,細心觀察就會發現,每個函數都很簡短,作為開源閱讀源碼,我相信Underscore是不錯的選擇
筆記
1:大量的這種方法,應該是 方式原始方法被篡改,同時加快運行速度,而言strict 模式後,也不讓通過arguments.callee 調用相關方法的餓原因吧
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; // Create quick reference variables for speed access to core prototypes. var push = ArrayProto.push, slice = ArrayProto.slice, concat = ArrayProto.concat, toString = ObjProto.toString, hasOwnProperty = ObjProto.hasOwnProperty;
2:void 0,開始還好奇為啥用void 0,是undefined 的縮寫?後來一打聽才知道,原來undefined在舊版本的瀏覽器中是不可以被賦值的,而新版本的瀏覽器是可以被賦值的,為了準確的判斷,所以就有了void 0
_.first = _.head = _.take = function(array, n, guard) { if (array == null) return void 0; if ((n == null) || guard) return array[0]; if (n < 0) return []; return slice.call(array, 0, n); };
3:代碼短小精幹
Underscore 代碼短小精乾沒的說,真是精品
除了 eq 這個方法長點外 其他方法都很短
4:遺憾 這次走讀 沒記錄筆記沒調試