jQuery基本結(jié)構(gòu)
- jQuery的本質(zhì)是一個閉包
- jQuery為什么使用閉包來實現(xiàn):為了避免多個框架的沖突
- jQuery如何讓外界訪問內(nèi)部定義的局部變量:window.xxx = xxx;
- jQuery為什么要給自己傳遞一個window參數(shù):為了方便后期壓縮代碼和提升查找的效率
- jQuery為什么要給自己接收一個undefined參數(shù):為了方便后期壓縮代碼,IE9以下的瀏覽器undefined可以被修改,為了保證內(nèi)部使用的undefined不被修改,所以需要接收一個正確的undefined
jQuery入口函數(shù)
- 傳入 '' null undefined NaN 0 false,返回空的jQuery對象
- 字符串:
- 代碼片段:會將創(chuàng)建好的DOM元素存儲到j(luò)Query對象中返回
- 選擇器:會將找到的元素存儲到j(luò)Query對象中返回
- 數(shù)組:會將數(shù)組中存儲的元素依次存儲到j(luò)Query對象中返回
- 除上述類型以外的:會將傳入的數(shù)據(jù)存儲到j(luò)Query對象中返回
真?zhèn)螖?shù)組轉(zhuǎn)換
- apply和call方法的作用
- 專門用于修改方法內(nèi)部的this
- call(對象,參數(shù)1,參數(shù)2,...);
- apply(對象,[數(shù)組]);
- 真數(shù)組轉(zhuǎn)偽數(shù)組:[].push.apply(obj,arr);
- 偽數(shù)組轉(zhuǎn)真數(shù)組:[].slice.call(obj);
函數(shù)處理
onload事件會等到DOM元素加載完畢,還會等到資源也加載完畢才會執(zhí)行
-
DOMContentLoaded事件只會等到DOM元素加載完畢就會執(zhí)行回調(diào)(不支持IE8及以下)
//判斷DOM是否加載完畢 if (document.readyState == "complete") { fn(); }else if (document.addEventListener) { document.addEventListener("DOMContentLoaded",function () { fn(); }) }else { document.attachEvent("onreadystatechangge",function () { if(document.readyState == "complete") { fn(); } }) }