练武不练功,到老一场空。计算机也一样。

计算机的功,就是原理。如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已。知其然,更要知其所以然。

jquery我们用得很爽,但它究竟咋实现的?

1、首先,jquery就是一些javascript。
而且完全就是一些原始的javascript,没有用其他第三方的库或什么的。它本身就存放在一个js文件里。

我们常常张嘴就说:

jquery是一个javascript框架

哦,可不是随便说说而已。

2、总体结构
javascript里,基本元素就是函数。从大的方面说,整个jquery,就是一个javascript的函数,以jquery-1.12.3为例,其总体结构如下:

(function( global, factory ) {//调用factory(工厂)生成并返回jQuery实例
}(global实参, factory实参));

这个巨大的函数,声明并运行,最终目的只有一个,就是生成并返回一个jQuery实例(就是那个美元符,在这里,美元符是一个函数实例!)。

而源码的绝大部分,也就是主体部分,放在 factory实参 这里。这个 factory实参,是一个巨大无比的匿名函数。

再放大一点看看:

(function( global, factory ) {//调用factory(工厂)生成jQuery实例factory( global );
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {//factory实现,jquery源码主体部分
}));

转载于:https://www.cnblogs.com/leftfist/p/6808717.html

jquery源码学习笔记一:总体结构相关推荐

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

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

  2. 非典型2D游戏引擎 Orx 源码阅读笔记(1) 总体结构

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 前言 完全不了解Orx的可以参考我写的<orx 库简单介绍 >以及官方 ...

  3. 菜鸟的jQuery源码学习笔记(三)

    1 each: function(callback, args) { 2 return jQuery.each(this, callback, args); 3 }, each:这个调用了jQuery ...

  4. 2016年11月2日——jQuery源码学习笔记

    1.jQuery()函数,即$().有四种不同的调用方式. (1)传递CSS选择器(字符串)给$()方法,返回当前文档中匹配该选择器的元素集.可选第二个参数,一个元素或jQuery对象,定义元素查询的 ...

  5. RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?

    RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 文章目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目 ...

  6. Vuex 4源码学习笔记 - 通过Vuex源码学习E2E测试(十一)

    在上一篇笔记中:Vuex 4源码学习笔记 - 做好changelog更新日志很重要(十) 我们学到了通过conventional-changelog来生成项目的Changelog更新日志,通过更新日志 ...

  7. 雷神FFMpeg源码学习笔记

    雷神FFMpeg源码学习笔记 文章目录 雷神FFMpeg源码学习笔记 读取编码并依据编码初始化内容结构 每一帧的视频解码处理 读取编码并依据编码初始化内容结构 在开始编解码视频的时候首先第一步需要注册 ...

  8. PHP Yac cache 源码学习笔记

    YAC 源码学习笔记 本文地址 http://blog.csdn.net/fanhengguang_php/article/details/54863955 config.m4 检测系统共享内存支持情 ...

  9. jQuery源码学习之Callbacks

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

最新文章

  1. 京东2017校招前端主观题汇总
  2. [转]---UAP中如何判断当前APP在哪个平台设备上运行
  3. CTF-Misc-常用知识点
  4. Delphi替换PE图标资源
  5. WIF - claims-based identity
  6. ANT简明教程[转载]
  7. vue 拖拽(笔记)
  8. 男女薪酬差异扩大 2018年女性薪酬不及男性8成?
  9. 【渝粤教育】国家开放大学2019年春季 1152教育法学 参考试题
  10. php pdoconnection,php使用pdo连接报错Connection failed SQLSTATE的解决方法
  11. Windows自动关机命令
  12. macbook pro安装JDK
  13. 时间片轮转调度算法(Java)
  14. 【JavaScript】英雄联盟官网作品介绍,轮播图的实现
  15. CC2530按键控制呼吸灯
  16. 第17节 三个败家子(17)——少侠孙坚
  17. PLC的顺控继电器(SCR编程)总结
  18. 反光衣自动识别检测 opencv
  19. 在官方网站获得JMeter工具的步骤
  20. 伪元素(3)-解决IE6/IE7/IE8不支持before,after问题

热门文章

  1. linux硬件控制流,Linux系统学习笔记:异常控制流
  2. 如何去选取第一批要阅读的论文?_MPA论文如何选题?
  3. linux vim编辑器主要作用,Linux-vim编辑器
  4. java寄存器_汇编学习 1 寄存器的作用 寻址方式 - DraculaW - JavaEye技术网站
  5. 2021年春季学期-信号与系统-第十五次作业参考答案-第七小题参考答案
  6. 实验研究信标无线电能输出功率的因素
  7. 高频信号对LM386直流偏置的影响
  8. python笔试题奥特曼打怪兽_python笔试做错的题目
  9. mysql have_mysql having用法解析
  10. python重复执行_python flask schedule重复运行 任务被重复执行问题 解决方案