jQuery原始碼裡自己也有很多用到each方法。其實jQuery裡的each方法是透過js裡的call方法來實現的。下面簡單介紹一下call方法。
call這個方法很奇妙,其實官方的說明是:「呼叫一個物件的一個方法,以另一個物件取代目前物件。」網路上更多的解釋是變換上下文環境,也有說是改變上下文this指標。
call([thisObj[,arg1[ [,.argN]]]]])
參數
thisObj 可選。將被用作當前對象的對象。
arg1, arg2, , argN 可選。將會被傳遞方法參數序列。
call 方法可以用來取代另一個物件呼叫一個方法。 call 方法可將一個函數的物件上下文從初始的上下文變更為由 thisObj 指定的新物件。
範例
function add(a,b) 🎜>{
alert(a b);
}
function sub(a,b)
{ , 3,1);
用add 來取代sub,add.call(sub,3,1) == add(3,1) ,所以運行結果為:alert(4 );
注意:js 中的函數其實是對象,函數名稱是對Function 物件的參考。
具體call更深入的就不在這裡提了。
下面提一下jQuery的each方法的幾種常用的用法
複製程式碼
代碼如下: var arr = [ "one", " "p" "three", "four"]; $.each(arr, function(){
alert(this); 結果分別為:one,two,three,four
複製程式碼
代碼如下:
其實arr1為一個二維數組,item相當於取每一個一維數組,
item[0]相對於取每一個一維數組裡的第一個值
所以上面這個each輸出分別為:1 4 7
複製程式碼
複製程式碼
複製程式碼複製碼{ one:1, two:2, three:3, four:4};
$.each(obj, function(key, val) {
;
這個each就有更厲害了,能循環每一個屬性
輸出結果為:1 2 3 4