Jquery总体架构

来源:互联网 发布:ubuntu打开文件夹命令 编辑:程序博客网 时间:2024/06/16 22:28

学习jquery源码

1.jQuery是自调用匿名函数

(function(global, factory ) {})(typeof window !== "undefined" ? window : this, function(){});


通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。

2.为什么要传入window呢?

通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;这还不是关键所在,更重要的是,将window作为参数传入,可以在压缩代码时进行优化

,看看jquery-1.6.1.min.js:

(function(a,b){})(window); // window 被优化为 a   



3.为什么要在在参数列表中增加undefined呢?

在 自调用匿名函数 的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。

undefined = "now it's defined";

alert( undefined );

浏览器测试结果:

浏览器

测试结果

结论

ie

now it's defined

可以改变

firefox

undefined

不能改变

chrome

now it's defined

可以改变

opera

now it's defined

可以改变


4.总体架构

(function( window, undefined ) {    // 构造jQuery对象var jQuery = function( selector, context ) {        return new jQuery.fn.init( selector, context, rootjQuery );    }// 工具函数 Utilities// 异步队列 Deferred// 浏览器测试 Support// 数据缓存 Data// 队列 queue// 属性操作 Attribute// 事件处理 Event// 选择器 Sizzle// DOM遍历// DOM操作// CSS操作// 异步请求 Ajax// 动画 FX// 坐标和大小    window.jQuery = window.$ = jQuery;})(window);


0 0
原创粉丝点击