jQuery总体架构的理解分析
2023-06-13 09:14:27 时间
jQuery脚本总体结构来说,有如下形式:
复制代码代码如下:
(function(window,undefined){
//DefinealocalcopyofjQueryvarjQuery=function(selector,context
){//ThejQueryobjectis
actuallyjusttheinitconstructor
"enhanced"returnnew
jQuery.fn.init(selector,context);},
//ExposejQuerytotheglobalobjectwindow.jQuery=
window.$=jQuery;
})(window);
对这样的结构不很理解,也没做深究,只知道和和所谓的
实际是定义了一个全局函数,前一个括号为一个匿名函数,后面为函数的调用。可以这样理解:
varfun=function(window,undefined){
......
}
fun(window);
整个脚本是一个匿名函数(暂时叫它mainFn吧),函数被加载的时候便开始执行,mainFn可以接收两个参数,执行时只传递一个参数window.
1.具体解释下这个写法的意思:
2.window函数执行时会传入window,这个传入的window是全局对象(通常为Window)的
3.一个属性且window=this,而传入mainFn函数中作为其参数时,它会被存储在
4.mainFn的调用对象中.在原型链中查找变量的策略是(非嵌套函数):先查找调用
5.对象,再查找全局对象,所以这使得整个mainFn中使用的window时查找效率更高
6.undefined由于执行时并未传递第二个参数,故变量undefined的值为undefined.早期版
7.本的浏览器中全局对象可能没有undefined属性,所以不能直接使用它.通常避免
8.这个问题的写法是window.undefined=window.undefined
然后在最后让jQuery库中最重要的对象jQuery成为了window对象的一个属性,并可以简写为“$”。
其它的补充资料:
JQuery是个出色的javascript库,最近结合它写javascript,看了下源码。
先从整体、全局的看,jQuery的源码几乎都在下面的代码中:
(function(){
//……
})();
第一个括号里面是个匿名函数,第二个括号表示马上执行第一个括号里面的代码。
首先明白,javascript里面是没有命名空间的,要保证你的javascript函数、对象与其他的不冲突,这里用了javascript的一个技巧:你的所有javascript函数、对象都在一个匿名函数里面定义,确保了所定义的函数、对象的有效范围,起到了命名空间的作用。既然作用范围在这个匿名函数中,怎么被别人使用呢?下面看它的下面代码:
varjQuery=window.jQuery=function(selector,context){
//……
};
这里让jQuery库中最重要的对象jQuery成为了window对象的一个属性,这样就可以在其他地方像使用document(document也是window的一个属性)一样使用jQuery了。也许使用过jQuery的朋友惊讶-我没有使用jQuery对象,一直使用$的。没错,那是jQuery的同名对象:
window.$=jQuery;
现在明白了吧。
这个库的结构是这样的:
1.(function(window,undefined){
2.vardocument=window.document;
3.varjQuery=...
4....
5....
6.})(window);
(function(window,undefined){vardocument=window.document;varjQuery=.........})(window);
整个脚本是一个匿名函数(暂时叫它mainFn吧),函数被加载的时候便开始执行,mainFn可以接收两个参数,执行时只传递一个参数window.
1.具体解释下这个写法的意思:
2.window函数执行时会传入window,这个传入的window是全局对象(通常为Window)的
3.一个属性且window=this,而传入mainFn函数中作为其参数时,它会被存储在
4.mainFn的调用对象中.在原型链中查找变量的策略是(非嵌套函数):先查找调用
5.对象,再查找全局对象,所以这使得整个mainFn中使用的window时查找效率更高
6.undefined由于执行时并未传递第二个参数,故变量undefined的值为undefined.早期版
7.本的浏览器中全局对象可能没有undefined属性,所以不能直接使用它.通常避免
8.这个问题的写法是window.undefined=window.undefined
相关文章
- jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」
- jQuery Google Charts—-一个封装google chart api的jquery插件详解编程语言
- 使用jQuery简化Ajax开发Ajax开发入门
- jQuery动态酷效果实现总结
- Jquery+CSS创建流动导航菜单FluidNavigation
- Jquery常用技巧收集整理篇
- 基于jQuery架构javascript基础体系
- 基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
- jqPlot基于jquery的画图插件
- 20个最新的jQuery插件
- jquery的冒泡事件的阻止与允许(三种实现方法)
- jquery写个checkbox——类似邮箱全选功能
- jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
- jquery中通过父级查找进行定位示例
- jquery追加tr和删除tr示例代码
- jQuery中校验时间格式的正则表达式小结
- js实现幻灯片效果(基于jquery插件)
- jquery淡化版banner异步图片文字效果切换图片特效
- jQuery隐藏和显示input默认值示例
- jquery的总体架构分析及实现示例详解
- jQuery和CSS的文本特效插件集锦
- 分享2个jQuery插件--jquery.fileupload与artdialog
- jQuery+CSS3实现树叶飘落特效