起因

乘势饿百新零售项目一期的告一段落,算是暂时从加班的修罗场里面解放出来了,于是就想搞点事情,正雅观项目js库的时候发现了躺在角落的jQuery,想到当初看源码的时候断断续续的尚未看完平素是心中的缺憾,于是下定狠心把这一个缺憾弥补了。

读书格局

自家下载的是jQuery
3.2.1本子,大概瞄了一眼,一万行多或多或少,由于源码太多,怕见到最终看乱了于是选用看一点删或多或少的点子,优先看这个并未耦合的静态函数,所以并从未提前制定阅读社团,倘若有对象也在看本身这篇著作的话可以也运用我的措施来读书,可能会更清晰一些。尽管读者刚接触前端不就引进先去看完《js高程》精晓了js的基本概念和章程再来继续阅读。

开始

一、jQuery的结构

jQuery的最外层是一个登时实施函数,这办法在原先没有es6的科班模块化方法在此以前,几乎拥有的js库函数都选择的这种方法来给协调定义全局变量的,利用的是js的闭包原理。js在一始发加载jQuery的时候会立马实施这多少个函数,然后采纳闭包原理将jQuery本身存在内存中,这样就可知确保jQuery对象在全局访问到了。

jQuery在一开端就利用了最谨慎的严俊格局来让代码更加正规,这样就会让代码缩小失误的机会。

"use strict"

 

说到jQuery的协会,有必不可少说说3.0+版本和老版本还有有部分不等同的地点的。直接上图:

图片 1

如若把现行的jQuery代码和很久此前的本子举办比较的话你会发觉结构层有了很大的生成,老版本的jQuery的最外层并从未如此多层的构造,只是一个当下执行函数,然后函数的末段传入了唯一一个变量window,当时的简短结构是由于jQuery库只是选用在浏览器中,所以全局对象只会是Windows,而随着前端的便捷提升,出现了nodejs和见仁见智的模块化规范,jQuery也与时俱进加了这地点的包容性方案。在立即执行函数最后有一个:

typeof window !== "undefined"? window : this

这些是来判定函数开始化时传出的全局变量是否来自于浏览器的window,假诺是就扩散window,假设不是就不胫而走未知的大局参数。后边的function则是我们平时用的有所jQuery内定义的主意。

jQuery初阶化函数的最顶层有一个论断:

typeof module === "object" && typeof module.exports === "object" 

其一是来区别是否来自于类似服从CommonJS规范,module存在切module.exports要是一个object对象。因为在CommonJS中对外暴漏借口就是相仿module.exports.addX

addX。nodejs中使用的就是CommonJS规范,在上图中得以看出依照是否享有CommonJS规范jQuery的起初化参数并不一样。

图片 2

这边正常的浏览器进来在构建时未尝第二个参数,那么这几个参数是做哪些的啊?

图片 3

将jQuery源码拉到底部,你会发觉最前边有一个上图这样的函数,注释中说的很详细了,这么些参数就是来判定是否要将jQuery和$这四个紧要字绑定到浏览器全局window上的。 

相关文章

网站地图xml地图