selector = selector || document 暗示了如果$(),那么就相當于$(document)
selector.nodeType用來判斷是否是一個domElement對象,如果是直接將本對象包裝成jquery對象返回,這里要說明一 點,實際jquery對象是一個偽數組或者說是一個功能異常強大的集合,你可以通過下標去訪問里面的元素和length屬性,但它不會像數組一樣去幫你維 護里面的元素,比如你將length設為空,它不會幫你將里面的元素清空,因為他是一個偽造的。
if ( typeof selector == "string" ) {
....
}else if ( jQuery.isFunction( selector ) )
return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector );
return this.setArray(jQuery.makeArray(selector));
判斷是否是字符串,情況比較多,稍后討論,先看簡單的,好像也不太簡單
jQuery.isFunction( selector ) 判斷傳進來的是否是一個函數
isFunction函數體如下:
return !!fn && typeof fn != "string" && !fn.nodeName &&
fn.constructor != Array && /^[\s[]?function/.test( fn + "" );
!!fn強制返回boolean型,然后否定了它不是字符串,不是dom元素,不是數組,然后用一個正則進行驗證,為什么要加個"^[\s[]?"讓我很 困惑,因為這是一個全局函數所以才判斷這么多,實際上就這個邏輯關系,只用最后一個驗證就行了,因為前面已經都有對應的判斷了,不過這個方法還是相當具有 價值的,多多品味
jQuery( document )返回是一個骨子里是document的jquery對象
[ jQuery.fn.ready ? "ready" : "load" ]如果jQuery.fn存在ready屬性,返回[ready]否則返回[load],這種寫法很值得借鑒,簡潔高效
posted on 2011-09-05 10:04
墻頭草 閱讀(2556)
評論(0) 編輯 收藏