jQuery1.3.2  源码学习

本源码使用当前的 jQuery 1.3.2 版本,下载时间 2009-4-25,下载网站:jquery.com。

一个函数

1 /*!

2  * jQuery JavaScript Library v1.3.2

3  * http://jquery.com/

4  *

5  * Copyright (c) 2009 John Resig

6  * Dual licensed under the MIT and GPL licenses.

7  * http://docs.jquery.com/License

8  *

9  * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)

10 * Revision: 6246

11 */

12 (function(){

4376 })();

省略掉中间的内容,可以看到从第 12 行到 4376 行,jQuery 代码可以简化为如上的代码。

也就是定义了一个匿名的函数,然后执行这个函数。

在这个匿名函数中完成其他的定义和操作,这样可以避免与系统的其他函数同名造成的命名冲突问题。相当于一个私有的作用域。

$ 是什么?jQuery 又是什么?

13 var

14 // Will speed up references to window, and allows munging its name.

15 window = this,

16 // Will speed up references to undefined, and allows munging its

17 name.

18 undefined,

19 // Map over jQuery in case of overwrite

20 _jQuery = window.jQuery,

21 // Map over the $ in case of overwrite

22 _$ = window.$,

23

24 jQuery = window.jQuery = window.$ = function( selector, context ) {

25   // The jQuery object is actually just the init constructor 'enhanced'

26   return new jQuery.fn.init( selector, context );

27 },

通过这段代码,可以看到 $,jQuery 是 window 对象上自定义的一个成员,这个成员指向了一个匿名函数,以后可以通过window 对象的 $ 或者 jQuery 来使用这个函数。

这个函数返回了一个通过 jQuery.fn.init 函数定义的对象。说明通过 jQuery 得到的对象其实是一个 jQuery.fn.init 函数创建的对象,那么,以后通过 jQuery.fn.init 的原型定义的函数或者属性都可以被通过 jQuery 创建的对象来使用。

jQuery.fn 是什么?

35  jQuery.fn = jQuery.prototype = {

538 };

从 35 行到 538 行,为 jQuery.fn 的定义,jQuery.fn 就是 jQuery 所指向的函数的原型对象。所以在 jQuery 的原型上定义的函数就可以通过 jQuery.fn 来使用了。

而上边的 jQuery.fn.init 就是 jQuery 函数原型对象上的一个函数。

转载于:https://www.cnblogs.com/haogj/archive/2009/04/25/1443469.html

jQuery1.3.2 源码学习 -1 $ 是什么?jQuery 又是什么?相关推荐

  1. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  2. jQuery1.3.2 源码学习 -2 两个重要的正则表达式

    32 // Is it a simple selector 33 isSimple = /^.[^:#\[\.,]*$/ / / 表示这是正则表达式 ^ 表示开始部分 $ 表示结束部分 . 匹配除了 ...

  3. [转载]jQuery1.6.1源码分析系列

    转载:http://www.cnblogs.com/nuysoft/archive/2011/11/14/2248023.html [原创] jQuery1.6.1源码分析系列(停止更新) 作者:nu ...

  4. Shiro源码学习之二

    接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...

  5. Shiro源码学习之一

    一.最基本的使用 1.Maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId&g ...

  6. mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...

    前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...

  7. vue实例没有挂载到html上,vue 源码学习 - 实例挂载

    前言 在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法. src ├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能. ├── ...

  8. 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制

    Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...

  9. jQuery源码学习之Callbacks

    jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...

最新文章

  1. 自动驾驶传感器比较:激光雷达(LiDAR) vs. 雷达(RADAR)
  2. new和malloc的区别
  3. oracle 提取首字母,oracle 取字段文字拼音首字母
  4. VS2010下使用dmp文件和pdb文件定位到dll中崩溃位置的方法
  5. Opencv学习笔记之OpenCV介绍
  6. MyEclipse里更改字体大小和快捷建的设置
  7. 图像处理:给验证码图片做降噪处理及数据清洗
  8. Tcp设置发送和接收超时
  9. Java多线程学习八:线程池常用的阻塞队列
  10. autobuddy in mfc导致的错误
  11. PHP查看内存使用量
  12. 关于STM8L系列编程
  13. 7大国内外自动驾驶仿真平台汇总
  14. 远程桌面不能复制粘贴
  15. 在二叉树中查找两个节点的最近的公共祖先节点(无回溯指针)(NCA--nearest common ancestor)
  16. js写的 几款时间轴
  17. Python模拟鼠标键盘:pykeyboard库的使用
  18. python 画图marker标记汇总(matplotlib.pyplot)
  19. Python制作翻译工具(程序员必备中英文翻译工具)
  20. 马云泄露:2019年两大赚钱趋势,会成就普通人赚千万财富!

热门文章

  1. 复练-关于面试的科技树-能力三核的彩蛋
  2. html如何设置三列列宽相等,CSS分割宽度100%到3列
  3. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
  4. linux md5sum命令
  5. 编程一小时 code.org [六一关注]
  6. Visual Studio 2005 编译的版本无法启动,出现应用程序配置不正确的错误
  7. win32api window2con 模块 -系统注册表操作
  8. 状态模式(State Pattern)
  9. 解决Cannot load /usr/local/apache/modules/libphp5.so的方法
  10. Mr.J--贪吃蛇demo