underscorejsソースコード読み取りノート


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:大量のこの方法は、方式の元の方法が改ざんされ、同時に運行速度を速めるべきで、厳格なモードを言った後も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:残念ながら今回はノートを記録していないのでデバッグしていません