jQuery-02原型中的一些方法

jQuery原型方法中的一些方法

1.方法列表

  • toArray 把实例转换成数组
  • get 获取指定下标的元素
  • each 遍历实例,把遍历到的实例分别传给回调函数
  • map 遍历实例,把遍历到的实例分别传给回调函数,然后把回调的返回值收集起来组成一个数组返回
  • slice 截取实例的部分元素,组成一个新的jQuery实例返回
  • eq 获取指定下标元素,获取的是jquery类型的实例对象。
  • push 给实例添加新元素
  • sort 对实例中的元素进行排序
  • splice 按照指定的下标元素指定数量删除元素,也可以替换删除的元素

2.代码实现

  1. toArray。直接使用数组的slice方法。不传参数默认截取从0到最后一个元素

    toArray:function(){
        return [].slice.call(this);
    },
  2. get

    get:function(index){
        return i == null?this.toArray():(i>=0?this[i]:this[this.length - 1]);
    },
  3. each方法。each方法,因为不光是jquery实例可以调用,而且还可以作为静态方法,供其他的对象调用,所以该方法定义在jQuery中。

    each:function(obj,fn){
        var i,k;
        //处理数组
        if (jQuery.isLinkArr(obj)) {
            for (i = 0;i//使用call方法,将fn函数中的this值变为对应的value值。
                //这里通过判断fn返回值是否是false来判断是否是
                if (fn.call(obj[i],i,obj[i]) === false) {
                    break;
                }
            }
        }else {
            //处理对象
            for (k in obj){
                if (fn.call(obj[k],k,obj[k]) === false) {
                    break;
                }
            }
        }
        return obj;
    },
    
    //在原型中定义
    each:function(fn){
        return jQuery.each(this,fn);
    },
  4. map方法。同each方法,也是定义在jquery中,然后在原型中调用map静态方法。

    map:function(obj,fn){
        var i, len, key, result = [];
        if( 'length' in obj ) {
            for ( i = 0, len = obj.length; i < len; i++ ) {
                //将fn函数调用返回的结果存储进数组
                result.push( fn.call( obj[ i ], obj[ i ], i ) );
            }
        }else {
            for ( key in obj ) {
                result.push( fn.call( obj[ key ], obj[ key ], key ) );
            }
            return result;
        }
    }

你可能感兴趣的:(jQ学习,jQuery)