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)****