十.jQuery源碼分析之.map()

來源:互聯網
上載者:User

標籤:c   class   blog   a   http   get   

763行:三個參數.
elems:待遍曆的數組或對象.
callback:回呼函數,會在數組的每個元素或對象的每個屬性上執行.執行時傳入兩個參數:數組元素,元素下標;或屬性名稱,屬性值.
arg:僅限於jQuery內部使用.如果調用$.map()傳入了參數arg,則該參數會被傳給回呼函數callback;
768行的代碼有點長,將其個數修改一下.
isArray=elems instanceof jQuery
|| length !=undefined && typeof length==="number"
&&((length>0&&elems[0] && elems[length -1])
||length===0
||jQuery.isArray(elems)
);
對上面的代碼做解析.
如果elems是jQuery對象,則isArray=true;
如果elem.length是數值型,且滿足條件之一,則isArray=true:
length>0且elems[0]為真,且elems[length-1]為真.
length==0
elems是數組.
771~778行,對於數組或類數組對象(document.getElementByClassName("myClass")),則通過for迴圈下標,為每個元素執行callback,如果callback的傳回值不是null,則把傳回值放入數組ret中.
781~789行,對於對象,則通過for-in迴圈遍曆屬性名稱,為每個屬性執行callback,傳入的參數是屬性值,索引值,arg.如果callback的傳回值不是null,則把傳回值放入ret數組中.

792行:在空數組上調用concat(),將ret合并到空數組,並返回新數組.(concat()用於合并數組.)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.