码迷,mamicode.com
首页 > Web开发 > 详细

JQuery框架总体架构(转)

时间:2015-06-09 11:34:59      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

 

 


1.1        总体架构

打开源码首先你胡看到这样的代码结构

(function(window,undefined){
//jquery code
})(window);

1)这是一个自调用匿名函数:在第一个括号内,创建一个匿名函数,第二个括号,立即执行
2)为什么创建这个自调用匿名函数?
    通过定义一个匿名函数创建一个私有的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这一点非常有用,也是js框架必须支持的功能,Jquery呗应用在成千上万的javascriot程序中,必须确保Jquery创建的变量不能和导入他的程序所使用的变量发生冲突。
3)匿名函数从语法上叫做函数直接量,javascript语法需要包围匿名函数的括号。事实上自调用匿名函数有两种写法(注意标红的右括号)
第一种:(function(){......}(window));
第二种:(function(){......})(window);
4)为什么要传入window那?
通过传入window变量,使得window由全局变量称为局部变量,当在jquery代码块中访问window时候,不需要讲作用域回退到顶层作用域,这样可以更快的访问window,这还不是最关键的作用,最重要的是:将window作为参数传入,可以在解压代码时候进行优化,看下jquery-1.6.1.min.js:(function(a,b){..})(window);
5)为什么要在在参数列表中增加一个undefined那?
在自调用匿名函数的作用域内,确保undefined是真的未定义,因为undefined能够被重写,赋予新的值。
undefined="now it‘s dnfined";
alert(undefined);
 

6)注意到源码最后的分号了吗?
分号是可选的,但是省略分号并不是一个好的习惯,为了更好的兼容性和健壮性,请在每行代码的最后加上分号。


1.2        总体架构

接下来看看在 自调用匿名函数中都实现了什么功能,按照代码顺序排列:
(function(window, undefined) {
//构造jQuery对象
    var jQuery = function(select, context){
        return new jQuery.fn.init(selector, context, rootjQuery);
    }
//工具函数Utilities
//异步队列Dederred
//浏览器测试Support
//数据缓存Data
// 队列 queue
// 属性操作 Attribute
// 事件处理 Event
// 选择器 Sizzle
// DOM遍历
// DOM操作
// CSS操作
// 异步请求 Ajax
// 动画 FX
// 坐标和大小
    window.jQuery = window.$ = jQuery;
})(window);
从上边的注释看,jQuery的源码结构相当清晰,条理,不想代码那般晦涩和让人纠结






 

 

原创:http://blog.csdn.net/zzx252373003/article/details/10909865

 

JQuery框架总体架构(转)

标签:

原文地址:http://www.cnblogs.com/mjzhang/p/4562805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!