jquery源码解析

article/2025/10/26 5:54:53

(function(a,b){})()

JQuery源码的开头

(function(a,b){})(window)

通常(function(){})()用来封装一些私有成员或者公共成员的导出。
1. 定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。确保jQuery创建的变量不会与其他程序的变量发生冲突。
2. 传入window变量,使得window由全局变量变为局部变量,当在jQuery块中使用window时,能更快的访问到。同时压缩代码,进行优化,window优化成a。由于只传入一个参数,所以b为undefined,也有利于代码压缩优化。

jQuery则以DOM为核心

匿名函数

js中函数就是一个Function对象,匿名函数指没有函数名的函数,即:

function(x,y){return x+y;
}

这样就存在一个匿名函数的引用问题,通过一下方法引用:
方法一:

var abc = function(x,y){return x+y};
abc(1,2); //3

方法二:

(function(x,y){return x+y;
})(1,2); //3

方法一是我们常用的方法,方法二中,小括号的作用是把代码分块,而且每一块会有一个返回值,值既是小括号中表达式的返回值,即如同函数名作用一般取得引用位置,再后面加上()参数列表,实现普通函数的调用。
()运算符将一个表达式包裹起来作为一个整体进行运算,然后返回这个整体的值。
那么上面的(function(){})()中左侧定义function的()也是这个作用,将这个function给包裹起来,然后返回这个function。我们调用方法一般是a();那么(function(){})的作用就是返回这个function对象,然后(function(){})()右侧的()表示调用这个function

var abc = function(x,y){return x+y};

中abc的constructor与匿名函数的constructor一样,即,两者的实现一样。

jQuery中如何实现$引用

JS中window对象是全局变量,所有浏览器都支持window对象。它表示浏览器窗口。

 window.jQuery = window.$ = jQuery;

所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。

Sizzle引擎

jQuery以DOM为核心,jQuery内部使用Sizzle引擎,处理各种选择器,对DOM进行操作。

闭包

简单来说是指允许程序中调用函数中的局部变量。

class

简单来说可以把jQuery看成一个类,在原型上绑定方法就相当于成员方法,在jQuery上绑定方法,相当于类的静态方法。

jQuery.A = function (){}
jQuery.prototype.B = function(){}

相当于:

class jQuery(){public static A(){};public B(){};
}

.extend .fn.extend

jQuery为开发插件提供了两个方法

//添加类方法,为扩展jQuery类本身,为自身添加新的方法。
jQuery.extend();
jQuery.fn.extend();//添加成员函数,给jQuery对象添加方法//即指向jQuery对象的原型链,对其它进行的扩展,作用在jQuery对象上面
jQuery.fn=jQuery.prototype={//...
}

这里写图片描述

别名

var $j=JQuery.noConflict(); 
$j('#msg').hide();//此处$j就代表JQuery 

jQuery效率

  1. ID选择器的效率最高,直接使用了浏览器的内置函数document.getElementById(),效率很高。
  2. 少直接用class选择器
    class选择器是效率最慢的
  3. 多用父子关系,少用嵌套关系。
  4. 缓存jQuery对象
  5. 每一个$()的调用都会导致一次新的查找,所以,采用链式调用和设置变量缓存结果集,减少查找,提升性能。

原文不定时更新,具体请查看jquery源码解析


http://chatgpt.dhexx.cn/article/vMbG3nGU.shtml

相关文章

jQuery源码下载和编译

下载 git clone https://github.com/jquery/jquery.git编译 下载完成后,进入jquery文件夹,运行如下命令: npm run build最后全部编译完成,生成的文件在目录dist文件夹下: 有兴趣的就可以开始研究源码了。

jQuery源码阅读

1. 立即执行函数 简化后的代码就是这样 (function(global, factory) {... })(window, function () {}); Q:采用立即执行函数的好处是什么呢? A: 通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个私有的命名空…

jQuery -- jQuery源码(一):核心功能

一、jQuery无new构建实例 1、$就是jQuery的别称 可以在$和jQuery对象挂在在window中,实现全局引用。 给Windows对象扩展一个$的属性,让它拿到jQuery构造函数的引用 可以用$访问到jQuery的构造函数 // jQuery.js (function(root) {var jQuery functio…

制作一个游戏编辑器玩玩(1)

今天准备着手例用空闲时间制作一个游戏编辑器,一是因为这些年来积累了不少的算法和制作经验,它们是分散的,零乱的,想搞一次规整。二是自己一起想做一个简单点的游戏编辑器,可以让自己的小朋友把自己的想法在上面实现&a…

游戏策划的软件与工具

游戏策划的软件与工具 UXplayer https://www.jianshu.com/p/ceddde705933 gongjutitle.png 本文修改自前公司的一份交接文档,分享了工作中一些常用的软件。 Axure 界面示意图/流程图制作软件 大前提:Windows系统、无法直连外网 Mac系统的话,…

Tiled游戏地图编辑器

下载 软件是免费的,直接官网下载就好了 下载链接:https://www.mapeditor.org/ 新建地图 左上角 >> 文件 >> 创建新地图 快捷键:ctrln 根据你的需求设置地图大小 导入素材新建图块集 左上角 >> 文件 >> 新图块 新建你的图集文件.png 如果你已…

Android游戏开发之地图编辑器的使用以及绘制地图 (四)

雨松MOMO带你走进游戏开发的世界之地图编辑器的使用以及绘制地图 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/211 Mappy中文地图编辑器的使用说明下载地址&#…

编辑器

问题描述 你现在要实现一个针对于数字序列的编辑器。 初始的时候,序列是空的。 在之后,有以下五种操作: I x 在光标之后插入x D 删除光标之前的数字 L 将光标向左移动,如果已经在最左,则不移动 R 将光标向右移动&#…

代码编辑器

文章来源:几款非常优秀且常用的代码编辑器 ... VS CodeSource InsightVimUltraEditeclipseUnderstandAtomSublime Text 对于软件开发人员,代码编辑器好用与否直接影响代码编辑的效率。软件开发,基本上都有集成开发环境(IDE&#x…

Unity的编辑器

1大部分人Unity编辑器是vistual 2.变量 2.1新建C#文件 鼠标点击Assets-->再点击create-->点击C#Sprite 2.2先用鼠标点击游戏物体(Cube)将c#文件拖拽到Inspector下,双击C#文件可以进入编写代码 2.3变量 public 变量类型 变量; //公有属性在Inspector下可…

游戏编辑器框架

原文:http://www.cnblogs.com/winsonchen/archive/2008/03/29/1128575.html 《游戏创造》08年第二期有一篇关于“wxWidget游戏编辑器框架”开发的文章,作者使用过unreal引擎,熟悉unreal编辑器实现细节。该作者建议采用wWidget开发…

RPG++——游戏编辑器的开发

完整资料进入【数字空间】查看——baidu搜索"writebug" 随着当下电子设备的普及以及人们对娱乐需求的上升,电子游戏逐渐走进千家万户。RPG(角色扮演)游戏作为最经典的游戏种类之一,因其游戏形式多样,自由度…

RPG或SLG游戏在线地图编辑器

有做大型RPG或SLG游戏需求的朋友请进,有在线地图编辑器 我凭借多年的游戏开发经验,用cocoscreator2.13开发了一款web在线地图编辑器,暂且命名为EasyMapEditor,用Google浏览器打开,提供了从在线地图编辑到正式项目运行…

游戏编辑器制作(10)

差不多一年左右没有更新了,今天把这段时间的工作内容记录一下,从上一篇开始,制了很多相关功能,花了很多时间研究了RTS游戏的结构部分,也研究了RVO,还有些著名的开源游戏代码。自己实现了自己的rtssim(RTS模…

从零开始入门创作游戏——Unity编辑器的使用

还没找到工作的我继续瞎折腾中,上次搭建环境就花了我3天的时间 从零开始入门创作游戏——Unity3d的环境搭建_默哀d的博客-CSDN博客 接下来是根据油土鳖的视频学习创作的一个小恐龙跳跳跳游戏,直接上手做一次学得更多 https://www.youtube.com/watch?…

[转]2d游戏开发:游戏地图编辑器

2d游戏开发:游戏地图编辑器 akinggw 金桥信息 2006-06-15 游戏地图编辑器 作者:akinggw 朋友们,大家好! 今天,我们将讲解游戏开发中一个重要的工具DD“游戏地图编辑器”。 几乎任何一款商业游戏都有自己的游戏地图编辑器&am…

Unity 编辑器(UnityEditor)

<small>前几天开始准备看源码&#xff0c;结合自己工作使用Lua&#xff0c;想看sLua框架源码&#xff0c;但是Lua确实不太熟悉&#xff0c;于是还是选择C#&#xff0c;打算看NGUI的源码&#xff08;因为工作中也有用到&#xff09;。 自己看源码经验不是很多&#xff0c;…

游戏编辑器制作(3)

最近抽时间加入了自由的地表纹理编辑和地型升、降、平滑、平整等功能&#xff0c;把编辑操作等结构优化了一下&#xff0c;各功能代码更清晰了便于接下来大量功能的开发。也加入了简单的操作界面功能。截图记录一下。

游戏编辑器制作(4)

今天加入了一个简单的Lambert光照效果。重新计算了地面的法线。另外地形编辑工具已全部实现。加入了回退&#xff0c;重做系统。截图记录一下。

游戏编辑器制作(6)

这几天因为新冠疫情原因被隔离了几天&#xff0c;在家里把地形功能基本完成了&#xff0c;实现了下陷悬崖&#xff0c;实现了高级的悬崖系统&#xff0c;也实现了浅水和深水的表现。地形这块的功能只剩下斜坡了。 截图记录一下。