日期:2014-05-16  浏览次数:20301 次

Underscore.js 1.3.3 中文解释

// Underscore.js 1.3.3

// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.

// Underscore is freely distributable under the MIT license.

// Portions of Underscore are inspired or borrowed from Prototype,

// Oliver Steele's Functional, and John Resig's Micro-Templating.

// For all details and documentation:

// http://documentcloud.github.com/underscore

(function() {

 

    // 创建一个全局对象, 在浏览器中表示为window对象, 在Node.js中表示global对象

    var root = this;

 

    // 保存"_"(下划线变量)被覆盖之前的值

    // 如果出现命名冲突或考虑到规范, 可通过_.noConflict()方法恢复"_"被Underscore占用之前的值, 并返回Underscore对象以便重新命名

    var previousUnderscore = root._;

 

    // 创建一个空的对象常量, 便于内部共享使用

    var breaker = {};

 

    // 将内置对象的原型链缓存在局部变量, 方便快速调用

    var ArrayProto = Array.prototype, //

    ObjProto = Object.prototype, //

    FuncProto = Function.prototype;

 

    // 将内置对象原型中的常用方法缓存在局部变量, 方便快速调用

    var slice = ArrayProto.slice, //

    unshift = ArrayProto.unshift, //

    toString = ObjProto.toString, //

    hasOwnProperty = ObjProto.hasOwnProperty;

 

    // 这里定义了一些JavaScript 1.6提供的新方法

    // 如果宿主环境中支持这些方法则优先调用, 如果宿主环境中没有提供, 则会由Underscore实现

    var nativeForEach = ArrayProto.forEach, //

    nativeMap = ArrayProto.map, //