測試**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...