jQuery框架分析第一章: 第一个匿名函数

我的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源码里,由上往下一点点分析了。

时间: 2024-08-17 22:56:36

jQuery框架分析第一章: 第一个匿名函数的相关文章

【计算机网络】第一章第一节 计算机网络的基本概念

第一章第一节 计算机网络的基本概念 第一章概述了计算机网络和因特网,这一章从整体上粗线条地勾画出计算机网络的概貌和全课程的框架 Outline 计算机网络的具体构成描述 协议 Notes ## 计算机网路的具体构成描述  [计算机网络的定义] 计算机网络是 通信技术 与 计算机技术 紧密结合的产物 计算机网络就是 互连的.自治的 计算机集合 自治:无主从关系 互连:互联互通 计算机网络就是一种特殊的通信网络(信源和信宿都是计算机.传输数字化信息) [具体构成] 主机:处在因特网的边缘部分的设备都

第九章 Javascript之匿名函数

分析: 1.所谓匿名函数,从字面意思理解,就是没有名字的函数,js 用()来代替(注意,是英文状态下的括号) 2.定义形式: function (){ //to add codes that you want to add }   3.匿名函数作用 (1)与闭包函数相比较,最大作用是不污染全局对象,一旦执行完毕,GC自动回收内存,这是与闭包函数本质的区别.闭包函数的一大特点是: 变量常驻内存,只有关闭浏览器时,才释放. function f1(){ var n=999; nAdd=functio

Apache Client使用说明第一章(第一部分)

第一章.基础 1.1  请求的执行 HttpClient最重要的函数是用于执行HTTP方法.执行一次HTTP方法包涵一次或数次HTTP请求和HTTP响应的交互,通常在httpClient内部完成.程序员只需要提供一个请求对象用于执行,HttpClient发送请求道目标服务器并获得对应的响应对象,或者在执行不成功时抛出异常. HttpClient API的只要入口点是HttpClient接口. 以下是请求执行处理过程的简单示例 CloseableHttpClient httpclient = Ht

第一章第一节———java复习计划

今天是我复习计划开始的第一周,我将根据项目,对Java进行复习和学习,首先我先指定一个学习计划. 该项目是SSM集成框架项目. 1.spring框架复习. 2.对springMVC进行复习. 3.mysql复习. 4.mybatis复习. 5.spring-springMVC-mybatis框架的搭建. 6.display tag分页. 7.bootstrap 学习和使用 8.jQuery复习 将会根据一个具体项目对项目中用到的Java知识点进行复习学习. 原文地址:https://www.cn

第一章 第一节 笔记

一, 1.什么是程序? 为了让计算机执行某些操作或解决某些问题而编写的一系列有序指令的集合. 2. Java相关的技术 (3种): Java  SE  标准版   core  java   java技术的核心  (第一学期) Java  EE  企业版   (第二学期) Java  ME 微小版 (现在用的不多) 3.编写程序的步骤 : 三步走 a.编写源程序    HelloWorld.java b.编译成字节码文件  编译命令:javac HeloWorld.java---->HelloWo

【第一章第一回】BootStrap 简介

Twitter Bootstrap 是目前最受欢迎的前端框架,它简洁.直观.移动优先.强悍的前端开发框架,让web开发更迅速.简单.基于HTML.CSS和Javascript. 为什么使用Bootstrap? 移动优先 - Bootstrap 3,框架包含移动优先样式,是贯穿整个库而不是单独的文件. 浏览器支持 - 支持所有流行浏览器 很容易开始 - 任何了解HTML和CSS的人都可以学习Bootstrap.并且Bootstrap官网也有文档. 响应式设计 - Bootstrap的响应式CSS适

c语言第一章第一节 认识变量

声明:本人大一新生,闲着无聊..写写c语言教程..菜鸟一枚..大神勿喷!!! 接下来我们都用dev来进行编译..vc++太古老了,没提示功能,不好上手,并且老是出毛病..vs太大了,编个c不至于,运行太慢..下面是dev的下载链接...无毒放心 http://pan.baidu.com/share/link?shareid=1587509971&uk=4169326073 下面进入正题...认识变量(一般教程都是以hello world开始..我们直接搞事算了) 一.程序设计语言构成基本要素有什

第一章-第一题(小学生四则运算)--By郭青云

1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如:  1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩展功能和可以支持的表达式类型,最后希望能支持下面类型的题目 (最多 10 个运算符,括号的数量不限制) 25 - 3 * 4 - 2 / 2 + 89 = ? 1/2 + 1/3 - 1/4 = ?  (5 - 4 ) * (3 +28) =? d) 一次可以批量出 100 道以上的题目,保存在文本

第一章 第一节 理解 .Net Core 项目

先打开我们万能的VS2015,选择新建一个.Net Core项目,空项目就好. 建好之后的项目如下: 首先第一个Properties这个文件是关于本项目的一些设置,有有兴趣的同学可以去深入研究一下,本节就不在具体描述. 然后就是wwwroot文件夹,展开之后如下: 是用来存放项目需要用到的一些静态的资源,比如css文件.js文件.图片等等的静态文件,都放在这个文件夹.使用的时候url为http://xxx.com/css/xxx.css,而不是http://xxx.com/wwwwroot/cs