jQuery源码 仿栈与队列的操作
2020-04-15 本文已影响0人
柠檬果然酸
本节内容
1.get()
2.eq()
3.slice()
jQuery既然是模仿的数组结构,那么肯定会实现一套类数组的处理方法,比如常见的栈与队列操作push、pop、shift、unshift、求和、遍历循环each、排序及筛选等一系的扩展方法。
jQuery提供了.get()、:index()、 :lt()、:gt()、:even()及 :odd()这类索引值相关的选择器,他们的作用可以过滤他们前面的匹配表达式的集合元素,筛选的依据就是这个元素在原先匹配集合中的顺序。
get()
获取指定某个元素,该方法如果不传入任何参数就是将jQuery转换成数组返回。
get: function( num ) {
// Return all the elements in a clean array
if ( num == null ) {
return slice.call( this );
}
// Return just the one element from the set
return num < 0 ? this[ num + this.length ] : this[ num ];
}
eq()
作用和get()方法一样,唯一的区别就是eq返回的是一个jQuery对象,get返回的是一个DOM对象。
eq: function( i ) {
var len = this.length,
j = +i + ( i < 0 ? len : 0 );
return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
}
slice()
Query的考虑很周到,通过eq方法只能产生一个新的对象,但是如果需要的是一个合集对象要怎么处理?因此jQuery便提供了一个slice方法。
slice: function() {
return this.pushStack( slice.apply( this, arguments ) );
}