想知道「jquery對象轉換為dom對象時候的[0]屬性是哪裡來的」,首先必須知道使用jquery查找後的對象到底包含哪些內容;

我們以$("#test")為例,當文檔中有id為test的元素時,使用$("#test")最終結果如下:

可以從控制檯中看出,像是一個數組,但是,當進行類型檢測時,結果如下:

其實結果是一個「類數組」。對於什麼是類數組,可自行百度;

可以看出,查找結果的對象有個「0」屬性,保存著實際的dom元素對象;為何是這樣呢,其實可以從jquery源碼中得知:

當運行$("#test")時,會走到如上圖代碼,首先使用原生「document.getElementById("test")」查找實際dom元素,如果找到了,就會將查找到的dom元素保存到「this[0]」中,而this則是一個實例化的對象;然後賦值this.context與this.selector,最終將this返回,也就是我們最終的查找結果;

所以,由上可知,在jquery源碼中,其實就是將查找到的dom元素保存到返回對象的[0]屬性中,也就回答了它具體是從哪兒來的了。


推薦閱讀:
相關文章