jQuery原始碼分析之 inArray 函式

2021-07-05 15:02:28 字數 1340 閱讀 1546

測試**1:

//indexof原生方法:indexof(特定的元素,開始下標);

//同時indexof的第二個引數可以是負數,表示從倒數第幾個開始,記住,此時不是看下標,而是看倒數第幾個!

var array = [2, 5, 9];

array.indexof(9, -1); // 2

array.indexof(2, -3); // 0

//如果第二個引數是負數,同時該負數加上陣列長度依然小於0,那麼就會搜尋整個陣列,也就是從0開始搜尋陣列

總結:indexof如果第二個引數是負數表示從倒數第幾個開始查詢,如果第二個引數的負數加上陣列長度仍然小於0那麼就會搜尋整個陣列!

測試**2:

//(i in arr)判斷是為了跳過稀疏陣列中的元素,如果i in arr判斷為假,那麼直接返回false了,否則才判斷arr[i]===elem

// 例如 var arr = ; arr[2] = 1;

// 此時 arr == [undefined, undefined, 1]

// 結果是 => (0 in arr == false) (1 in arr == false) (2 in arr == true)

總結:in判斷會跳過稀疏陣列中的空白!

inarray原始碼分析:

var deletedids = ;

var indexof = deletedids.indexof;

inarray: function( elem, arr, i )

len = arr.length;

//alert($.inarray(5,[1,2,3,5,4],-1))這裡獲取到的i就是4,len就是5,返回值為-1

i = i ? i < 0 ? math.max( 0, len + i ) : i : 0;

for ( ; i < len; i++ )

}}return -1;

}

總結:(1)如果沒有傳入第三個引數,那麼i為0表示從頭開始查詢;如果傳入了第三個引數同時i<0那麼取max(0,length+i),也就是和indexof的邏輯是一樣的(傳入負數後加上長度還是小於0那麼就從頭開始查詢!)

(2)js原生的indexof可以傳入第二個引數表示開始查詢的下標,如果該下標是負數那麼取max(0,i+length)來表示從那裡開始查詢!

(3)要注意js中的稀疏陣列,在通過原生的foreach遍歷的時候也會跳過其中的空格元素,所以這裡的inarray方法也實現了跳過稀疏陣列中元素!通過判斷i in arr判斷是否是使用者主動設定了該元素!

jQuery原始碼分析之noConflict方法

1 因為下面函式的返回值是jquery物件,以後用x代替 了 只是名字不同而已 var x noconflict var 123 到這裡 被修改為123,被寫到這裡noconflict裡面的 是沒有意義的 x function 上面把var 123寫在那個位置下面兩行 沒有意義的 那麼什麼時候有意義...

jQuery原始碼分析

工具 版本說明 版本號備註 jquery 2.1.1 sublime 3jquery function selector,context jquery.fn jquery.prototype 快速匹配正則 不加g 不光匹配整體項還會匹配到子項 rquickexpr s w w w init jque...

jQuery原始碼分析

一 jquery如何做到不汙染變數名並暴露出 供使用者使用 jquery將變數和 寫進立即執行函式,通過函式來包裹所有的變數和方法,再在這個立即執行函式上將 jquery方法繫結到window上,就可以讓使用者使用到jq方法了。二 jquery是如何做到 jquery 的?function wind...