jquery源码分析2

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值