jQuery兼容很多瀏覽器,能夠方便使用JS動畫和各種交互。jQuery的源碼結構如下:
;(function(global,factory){
factory(global);
}(typeof window!=="undefined"?window:this,function(window,noGlobal){
var jQuery = function(selector, context){
return new jQuery.fn.init(selector,context);
};
jQuery.fn = jQuery.prototype = {};
//核心方法
//回調系統
//異步隊列
//數據緩存
//隊列操作
//選擇器
//屬性操作
//節點遍歷
//文檔處理
//樣式操作
//屬性操作
//事件體系
//AJAX交互
//動畫引擎
return jQuery;
}));
jQuery中有多個模塊,模塊之間互相依賴
自執行匿名函數(jQuery的源碼中有很多這樣的函數)
(function(window, factory){
factory(window)
}(this,function(){
return function(){
//jQuery的調用
}
}))
匿名函數可以防止全局變量的污染,小括號實現立即初始化,就就是單例模式執行一次,換一種寫法如下:
(function(window, undefined){
var jQuery = function(){}
//...
window.jQuery = window.$ = jQuery;
})(window);
上述代碼中參數的作用:
1.window為了防止需要window時多次在作用域鏈上去查找window,這樣將window傳入函數內可以很快找到window;
2.在一些瀏覽器中undefined可以被改寫,因為它不是關鍵字。
jQuery中的類數組對象
jQuery的入口都是統一的$,通過傳遞不同參數實現9中方法的重載:
1.jQuery([selector,[context]])
2.jQuery(element)
3.jQuery(elementArray)
4.jQuery(object)
5.jQuery(jQuery object)
6.jQuery(html,[ownerDocument])
7.jQuery(html,[attributes])
8.jQuery()
9.jQuery(callback)
jQuery對象通過對象鍵值對保存屬性,原型保存方法
****jQuery對象轉成DOM對象可以通過加下標或用.get()
$('#div')[0] $('#div').get(0)****