jquery源码分析2

来源:互联网 发布:windows xp繁体版下载 编辑:程序博客网 时间:2024/06/05 20:57

jquery源码分析系列2


// results is for internal usage only   只是为了内部使用

        makeArray: function(arr, results) {
            var ret = results || [];
           // 如果有arr
            if (arr != null) {
                if (isArraylike(Object(arr))) {
                    jQuery.merge(ret,
                        typeof arr === "string" ?
                        [arr] : arr
                    );
                } else {
                    push.call(ret, arr);
                }
            }

            return ret;

        },

// 很多地方都使用了这个函数

//判断是否是数组或者是类数组 返回值是boolean
    function isArraylike(obj) {
        var length = obj.length,
            type = jQuery.type(obj);//查看参数的类型  什么类型能够拥有length属性呢 一个是数组 一个是obj 一个就是function
        //如果是函数 或者是window本身  【因为window也是object类型】 直接返回false
        if (type === "function" || jQuery.isWindow(obj)) {
            return false;
        }
        //如果是元素类型 并且又length属性 就为真----》 其实就是元素集合
        if (obj.nodeType === 1 && length) {
            return true;
        }
        //如果是一个数组 等就是真 

        //疑问: 为啥还要检查是不是长度是0 的情况呢

        return type === "array" || length === 0 ||
            typeof length === "number" && length > 0 && (length - 1) in obj;
    }

0 0
原创粉丝点击