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源码里,由上往下一点点分析了。
jQuery框架分析第一章: 第一个匿名函数的更多相关文章
- Python【外】第一节 map()和匿名函数的配合使用
Python[外]第一节 map()和匿名函数的配合使用 map()函数 map函数使用语法如下:map(fun, iterable, ...) 功能: map() 会根据提供的函数fun对指定序列i ...
- ASP.NET自定义控件组件开发 第一章 第一章:从一个简单的控件谈起
第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第三 ...
- (第一章第一部分)TensorFlow框架介绍
接下来会更新一系列博客,介绍TensorFlow的入门使用,尽可能详细. 本文概述: 说明TensorFlow的数据流图结构 1.数据流图介绍 TensorFlow是一个采用数据流图(data fl ...
- c语言第一章第一节 认识变量
声明:本人大一新生,闲着无聊..写写c语言教程..菜鸟一枚..大神勿喷!!! 接下来我们都用dev来进行编译..vc++太古老了,没提示功能,不好上手,并且老是出毛病..vs太大了,编个c不至于,运行 ...
- 第一章-第一题(小学生四则运算)--By郭青云
1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如: 1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩 ...
- 【第一章第一回】BootStrap 简介
Twitter Bootstrap 是目前最受欢迎的前端框架,它简洁.直观.移动优先.强悍的前端开发框架,让web开发更迅速.简单.基于HTML.CSS和Javascript. 为什么使用Bootst ...
- Zabbix简介(第一章第一节)
Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持. Zabbix是一个企业级的.开源的.分布式的监控套件 Zabbix可以监控网络和服务的监控 ...
- 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文
钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest 第一次请求前触发 after_request 请求后触发 并返回参数 tear ...
- tensorflow2.0学习笔记第一章第一节
一.简单的神经网络实现过程 1.1张量的生成 # 创建一个张量 #tf.constant(张量内容,dtpye=数据类型(可选)) import tensorflow as tf import num ...
随机推荐
- FZU 2193 So Hard (有限小数转换最简分数)(想法题)
题目链接: 传送门 So Hard Time Limit: 1000MS Memory Limit: 65536K 题目描述 请将有限小数化为最简分数. 输入 一个整数n 表示需要转化的小数个 ...
- iOS - UITextfield 验证邮箱格式
做登录界面时,用户在UITextfield中输入输入邮箱账号后,我们应该在本地验证格式是否正确,再将参数传给服务器验证. 最简单的就是利用系统的NSPredicate //利用正则表达式验证 -(BO ...
- BZOJ1031: [JSOI2007]字符加密Cipher
传送门 后缀数组模板题 //BZOJ 1031 //by Cydiater //2016.9.21 #include <iostream> #include <cstring> ...
- Linux 问题汇总
centos主机发现大量的TIME_WAIT 解决方法: vim /etc/sysctl.conf #编辑文件,加入以下内容: net.ipv4.tcp_syncookies = 1 net.ipv ...
- gnuplot使用1
安装之后,迫切需要运行一个程序来看看,首先要找到软件默认的使用路径: 输入 show loadpath命令就会显示默认查找的几个路径, loadpath is loadpath from GNUPLO ...
- MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...
- shell操作mysql之增删改查
假设mysql用户名root 密码123456,新建测试数据表utable 脚本如下: #!/bin/bash#mysqlop.shmysql="/app/local/mysql/bin/m ...
- SublimeText2使用笔记
将Sublime Text2 加入右键菜单(转) 1. 运行中输入 regedit 打开注册表 2. 在HKEY_CLASSES_ROOT/*/shell/ 下新建’项’ ,名称自己觉得.我用的是Su ...
- JavaWeb学习笔记——Tomcat配置
使用的Tomcat版本是apache-tomcat-6.0.20 详细的环境变量配置参考<windows 7系统安装与配置Tomcat服务器环境> 网址为http://jingyan.ba ...
- strcpy函数的实现
strcpy函数的实现 大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是: char *my_strcpy(char *dst,const char *src) { a ...