我的jQuery版本为1.7*

这个版本代码比之前的版本优化了很多,结构也清晰了不少,就用最新的吧。

打开jQuery源代码

首先你能看到所有代码被一个

(function(window,undefined){

})(window)

这是个什么东西..

首先,这是一个匿名函数(不懂?那就先去谷歌下吧);

其次,这是一个自调用匿名函数;

这段代码做了三件事

第一件:创建一个只给jQuery用的空间,我们估且就叫 “私有空间”,与C++的命名空间很相似,为了保证jQuery不与其他JavaScript框架冲突,如果是一个JavaScript框架,为了通用性,必须要有自己的命名空间!

第二件:传入一个window变量,本来window是一个全局变量,但是这里把它传给jQuery框架,这个时候window在jQuery框架里就变成局部变量了,为什么?一切为了速度。当window变成局域变量之后,在JQ框架里面调用window变量,它的作用连就不用再回到顶层作用于。

注意:传到jQuery的window对象并不是一个拷贝,而是可以认为是一个指针,他们指向同一段内存地址。

如下面的代码:

window.a='this is in window';
(function(window,undefined){
window.a='this is in jq';
setTimeout(function(){
alert(window.c); //输出 this is c
},1000)
})(window)
window.c='this is c';
console.log(window.a) //输出 this is in jq;

第三件:传入undefined变量,为啥?

我也不太确定,查了下资料,说是为了保证jQuery空间内undefined为真的未定义。因为undefined可以被赋值变成一个局部变量。

如:

undefined="this is siren";
alert(undefine);

这段代码 除了在FireFox里不能变,其他浏览器unefined都变成已定义了。

下一章,我们就要从jQuery源码里,由上往下一点点分析了。

最新文章

  1. 转 centos虚拟机环境的构建。
  2. [IOS]swift 使用AVOS的API
  3. Activity的保存状态和状态恢复
  4. Java使用正则表达式获取文本的章节名称
  5. 他们在军训,我在搞 OI(二)
  6. Java将其他数据格式转换成json字符串格式
  7. C# socket 实现消息中心向消息平台 转发消息 (修改)
  8. eclipse开发servlet应用,Tomcat无法访问jpg图片
  9. (转)弹出窗口lhgDialog API文档
  10. JAVA 中LinkedHashMap要点记录
  11. C#历年来最受欢迎功能
  12. django中常用的数据查询方法
  13. mongoDB 数据库简介
  14. 洛谷P4705 玩游戏 [生成函数,NTT]
  15. C++程序设计方法1:分离代码
  16. eclipse 对 hadoop1.2.1 hdfs 文件操作
  17. 【xsy2304】哈 最短路
  18. Scala:First Steps in Scala
  19. Python 数字(Number)
  20. 转-如何使用iTunes制作iPhone铃声

热门文章

  1. POJ 2492 A Bug's Life
  2. python小打小闹之简陋版BBS
  3. Fix failed to start session in Ubuntu
  4. 功能完善的Java连接池调用实例
  5. curl 工具的使用
  6. jquery实现图片预加载
  7. Iframe 在项目中的使用总结
  8. aufomaper Queryable Extensions ProjectTo
  9. C++ default 和delete的新用法
  10. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)