jQuery总体架构的理解分析

 更新时间:2011年03月07日 09:27:48   作者:  
jQuery总体架构的理解,学习jquery的朋友可以参考下。
jQuery脚本总体结构来说,有如下形式:
复制代码 代码如下:

(function( window, undefined ) {
// Define a local copy of jQueryvar jQuery = function( selector, context
) { // The jQuery object is
actually just the init constructor
'enhanced' return new
jQuery.fn.init( selector, context ); },
// Expose jQuery to the global objectwindow.jQuery =
window.$ = jQuery;
})(window);

对这样的结构不很理解,也没做深究,只知道和和所谓的
Technorati 标签: ,,
js闭包的概念相关,今天查了一些资料,有了些基本的理解。
实际是定义了一个全局函数,前一个括号为一个匿名函数,后面为函数的调用。可以这样理解:
复制代码 代码如下:

var fun=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函数、对象都在一个匿名函数里面定义,确保了所定义的函数、对象的有效范围,起到了命名空间的作用。既然作用范围在这个匿名函数中,怎么被别人使用呢?下面看它的下面代码:

var jQuery = window.jQuery = function(selector, context) {
//……
};

这里让jQuery库中最重要的对象jQuery成为了window对象的一个属性,这样就可以在其他地方像使用 document(document也是window的一个属性)一样使用jQuery了。也许使用过jQuery的朋友惊讶-我没有使用jQuery对象,一直使用$的。没错,那是jQuery的同名对象:

window.$ = jQuery;

现在明白了吧。

这个库的结构是这样的:
复制代码 代码如下:

1. (function(window, undefined){
2. var document = window.document;
3. var jQuery = ...
4. ...
5. ...
6. })(window);

(function(window, undefined){ var document = window.document; var jQuery = ... ... ... })(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包装集

    从零开始学习jQuery (三) 管理jQuery包装集

    在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着学习如何管理jQuery包装集, 比如添加,删除,切片等.
    2011-02-02
  • jQuery的几种选择器及实例详解

    jQuery的几种选择器及实例详解

    这篇文章主要介绍了jQuery的几种选择器详解,Query 选择器基于元素的 id、类、类型、属性、属性值等"查找"(或选择)HTML 元素, 它基于已经存在的 CSS 选择器,除此之外,它还有一些自定义的选择器,需要的朋友可以参考下
    2023-05-05
  • jquery图片切换实例分析

    jquery图片切换实例分析

    这篇文章主要介绍了jquery图片切换的方法,实例分析了jQuery实现页面元素与相应样式切换效果的使用相关技巧,设计jQuery中hide、fadeIn、css、setInterval等方法的使用,需要的朋友可以参考下
    2015-04-04
  • jquery的冒泡事件的阻止与允许(三种实现方法)

    jquery的冒泡事件的阻止与允许(三种实现方法)

    冒泡或默认的事件发生,在某些时候是不需要的,在此就需要一些可以阻止冒泡和默认的事件的方法,本文介绍三种方法做到不同程度的阻止,感兴趣的朋友可以了解下,或许对你了解冒泡事件有所帮助
    2013-02-02
  • jQuery 重复加载错误以及修复方法

    jQuery 重复加载错误以及修复方法

    本文主要记录了在项目中遇到jQuery重复加载导致依赖jQuery的js全部失效然后一步步分析,得出最终解决方案的全部过程,主要是记录下来,提醒自己以后不要再犯相同错误。
    2014-12-12
  • jquery使用echarts实现有向图可视化功能示例

    jquery使用echarts实现有向图可视化功能示例

    这篇文章主要介绍了jquery使用echarts实现有向图可视化功能,结合完整实例形式分析了jquery的echarts.js插件实现有向图可视化相关实现技巧与操作注意事项,需要的朋友可以参考下
    2019-11-11
  • jQuery处理json数据返回数组和输出的方法

    jQuery处理json数据返回数组和输出的方法

    这篇文章主要介绍了jQuery处理json数据返回数组和输出的方法,涉及jQuery操作数组及json的技巧,需要的朋友可以参考下
    2015-03-03
  • 避免jQuery名字冲突 noConflict()方法

    避免jQuery名字冲突 noConflict()方法

    这篇文章主要为大家详细介绍了避免jQuery名字冲突,noConflict()方法,感兴趣的朋友可以参考一下
    2016-07-07
  • 使用jQuery实现简单穿梭框方式

    使用jQuery实现简单穿梭框方式

    这篇文章主要介绍了使用jQuery实现简单穿梭框方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法

    使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法

    这篇文章主要介绍了使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09

最新评论