码迷,mamicode.com
首页 > Web开发 > 详细

underscore.js依赖库函数分析一

时间:2014-10-04 13:13:06      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   java   for   sp   

Underscore简介:

    underscore是一个非常简洁,实用的javascript库,和jQuery封装类型差不多,但underscore是backbone的依赖 库,想运行backbone就必须先引入underscore.js。“_”开头是依赖库underscore的一个特征,用于区分其他库函数名。“.” 以后就是函数的名称。

 

Underscore函数:

    underscore中封装了60多个函数,供开发者使用,接下来一个个分析。

    1.each()和map函数

       underscore中each 和map有一个共同的特征,就是根据一定的条件去遍历集合中的每一个元素。但他们之间的操作方式却是不同的。

         each()函数:

            调用的格式:

               _.each(list,iterator,[context])

              该函数式根据iterator迭代器提供的过滤条件,遍历list列表中的每一个元素。

             源码:

   var each = _.each = _.forEach = function(obj, iterator, context) {
        if (obj == null) return;
        if (nativeForEach && obj.forEach === nativeForEach) {
         //如果宿主环境支持, 则优先调用JavaScript 1.6提供的forEach方法
            obj.forEach(iterator, context);
        } else if (obj.length === +obj.length) {
            // 对[数组]中每一个元素执行处理器方法
            for (var i = 0, length = obj.length; i < length; i++) {
                if (iterator.call(context, obj[i], i, obj) === breaker) return;
            }
        } else {
            // 对{对象}中每一个元素执行处理器方法
            var keys = _.keys(obj);
            for (var i = 0, length = keys.length; i < length; i++) {
                if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
            }
        }
    };

         函数思路:如果宿主支持原生的forEach方法,那就是直接调用原生的,如果不支持就走遍历方式,(一般为浏览器或node.js支持原生的forEach方法)。

         这里有一个判断方式很少见,obj.length === +obj.length,称之为鸭式辩型的判断方式。

 

 

    

underscore.js依赖库函数分析一

标签:style   blog   color   io   使用   ar   java   for   sp   

原文地址:http://www.cnblogs.com/kuailingmin/p/4005735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!