jQuery源码阅读

article/2025/10/26 6:04:48

1. 立即执行函数

简化后的代码就是这样

(function(global, factory) {...
})(window, function () {});

Q:采用立即执行函数的好处是什么呢?

A:   通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个私有的命名空间,不会污染全局变量。若想访问全局对象,将全局对象以参数的形式传进去即可。此外,新的作用域内对象想访问传入的全局对象时,就不需要一步一步的往上找,可提高效率。

2. init()

我们看如下一段代码:

var s = new $('.test');
var p = $('.test');
console.log(s);
console.log(p);

效果如下

令人惊讶的是,new 出来的和直接调用的,居然是一模一样的。

这就设计到了jQuery的经典的init操作:

查看core文件,可以了解到:

// 1jQuery = function (selector, context) {return new jQuery.fn.init(selector, context);
}// 2
jQuery.fn = jQuery.prototype = {init: function (selector, context ) {...}
}// 3
init = jQuery.fn.init = function (selector, context, root) {...
}init.prototype = jQuery.fn;
  • 步骤1: 我们从代码块2开始看,jQuery.prototype = jQuery.fn,且都挂在了init()函数。
  • 步骤2: 代码块3,jQuery.fn.init.prototype = jQuery.fn,而我们从步骤1中,了解到jQuery.prototype = jQuery.fn。因此,jQuery.fn.init.prototype = jQuery.fn = jQuery.prototype。
  • 步骤3: 最后,再回过头来看代码块1,function 返回的是 new jQuery.fn.init(...)。我们再看步骤2,jQuery.fn.init.prototype = jQuery.prototype。那么,new jQuery.fn.init(...)就相当于function 返回了一个new JQuery()。

绕了一大圈,就相当于 jQuery = new jQuery();

Q: 那么,为啥要绕那么远呢?

A: 为了得到jQuery原型链上的方法。


http://chatgpt.dhexx.cn/article/8quH9KG0.shtml

相关文章

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;也实现了浅水和深水的表现。地形这块的功能只剩下斜坡了。 截图记录一下。

Unity Editor 编辑器介绍

一、整体界面介绍&#xff1a; Project 窗口&#xff1a;列出所有的资源 Console 窗口&#xff1a;日志输出 Hierarchy 窗口&#xff1a;在Project 窗口选择一个 Scene 场景后&#xff0c;会在这个窗口显示这个构成这个场景的所有游戏对象 Inspector 窗口&#xff1a;在 Hie…

游戏编辑器制作(9)

夜阑卧听风雨&#xff0c;白日高温依旧。 何当蜀雨秋池&#xff0c;豆花白肉烧酒。 由于电力紧张&#xff0c;本周是在完全没有空调的三伏天工作的&#xff0c;温度最高达到了44度左右。基本上是赤背上阵。实现了粒子系统&#xff0c;各种显示方面的调优&#xff0c;加入了更多…