javascript 伪数组实现方法(2)


//$(document)
init: function( selector, context ) {
var match, elem, ret, doc;
// Handle $(DOMElement) : 处理DOM元素,
if ( selector.nodeType ) {
this.context = this[0] = selector; //给属性0赋予selector值,此时就是document对象
this.length = 1; //创建伪数组,更新下标
return this; //返回Jquery对象
}
//... ...
}


$("body")是同样的道理,不再多说了。
我们知道Jquery里所有的操作返回的都是Jquery对象,那我们如何得到其所对应的dom对象呢,Jquery为我们提供了一个get方法,这是专门用来从jquery对象中取得DOM对象用的,由此,便有了body.get(0),那为什么又是get(0)而不是get()呢,因为Jquery的所有操作都是针对于数组进行的。所以,在get方法里,我们要传一个下标值,来得到具体的元素。现在该看get方法的具体实现了:

复制代码 代码如下:


get: function( num ) {
return num == null ?
//如果没有num,则直接返回DOM数组
this.toArray() :
//如果指定的num,则返回指定下标的元素
//this.slice是jquery的另一个方法,它内部其实还是调用Array.prototype.slice来实现将伪数组转换为真实的数组
( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
}


关于伪数组就到这吧,我想应该已经差不多了。
注:有机会的话,将来可能会出一个"超越Jquery"系列,专门分析Jquery内部执行细节。但是由于Jquery内部的有各种歪门邪道的手法还不是很理解,所以这是将来的问题了。
参考:

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdxzzs.html