underscorejs 源碼走讀筆記

來源:互聯網
上載者:User

標籤: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:遺憾 這次走讀 沒記錄筆記沒調試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.