jquery框架概览(二)
2024-09-06 18:27:23
(function(window, undefined) {
})(window)
window对象作为参数传进闭包的好处
- JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员
- 在函数中定义一个变量时,这个变量只对当前函数可见,javascript会搜索当前函数的作用域,如果没有找到,则继续向上层搜索,而查询是要消耗性能的.
- 在对jQuery代码进行压缩时,window就能在jQuery内部用任意的简写字母代替
undefined为什么作为参数传进去
- undefined可以在js中被修改,这样jQuery内容使用的undefined就被修改了
代码的38~41行
var _jQuery = window.jQuery,
_$ = window.$;
在js中如果也定义了$和jQuery, jQuery和$就保存了这两个变量,避免了冲突
代码的61~63行定义了jQuery函数(返回的是一个对象)
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
代码的96行就定义了jQuery.fn,就能知道它其实就是jQuery的原型
jQuery.fn = jQuery.prototype={}
代码的283行含义把jQuery构造函数的原型的init的构造函数的原型对jQuery构造函数的原型有引用关系
jQuery.fn.init.prototype = jQuery.fn;
上面的有些绕口看代码吧
function jQuery(){
return new jQuery.prototype.init();
}
jQuery.prototype.init=function(){};
jQuery.prototype.css=function(){console.log("2")};
jQuery.prototype.init.prototype=jQuery.prototype;
jQuery().css();
下面是代码的示意图
代码的66~82行是一些正则
// Used for matching numbers
core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
- [+-]? 表示匹配一个+号或者一个-号也可能一个都没有
- (?:\d*\.|)
(?:) 表示不捕获 \d*表示0个或者多个数字,.表示一个小数点,|表示或者为空
- \d+ 表示1个或者多个数字
- (?:[eE][+-]?\d+|)
[eE]表示e或者E,[+-]?\d表示有且只有一个符号或者一个都没有,多个数字
- core_pnum
- 其实就是保存着一个字符串"[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)",方便和后续的组合成一个正则
// Used for splitting on whitespace
core_rnotwhite = /\S+/g,
- /\S+/g 表示所有的非空白的字符
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
- 匹配的是<p>aaa或者#id
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
- 匹配独立的标签比如<p></p>
// Matches dashed string for camelizing
rmsPrefix = /^-ms-/,
- 匹配ie浏览器的前缀比如chrome的前缀(-webkit-)
rdashAlpha = /-([\da-z])/gi,
- 匹配一个-号加数字或者字母
最新文章
- Principles of measurement of sound intensity
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
- could not deduce template argument for &#39;const std::_Tree<;_Traits>; &;&#39; from &#39;const std::string&#39;
- ofbiz进击 第二节。 control 理解与创建
- hihocoder 1138 Islands Travel dijkstra+heap 难度:2
- SQL Server 通配符 Wildcard character
- AAC ADTS AAC LATM 格式分析
- Android 输入法键盘和activity页面遮挡问题解决
- MYSQLl防注入
- MySQL5.7 安装过程中出现 attempting to start service 过不去
- Dynamics CRM Form表单中通过javascript抓取触发change事件字段的属性名
- Testlink1.9.17使用方法(第七章 测试用例集管理)
- HDU-1018 BigNumber(斯特林近似)
- 安装包安装npm
- tmux使用总结
- 8、Django的模型层(2)
- ubuntu普通账户获取root权限的方法以及su和su -的区别
- 本地删除文件,git远程不同步删除
- 随笔-未整理-linux下流量查看
- JS 判断浏览器类型,获取位置信息,让手机震动
热门文章
- 出现UnboundLocalError: local variable &#39;a&#39; referenced before assignment异常的情况与解决方法
- STM32F407的Modbus做为主站与从站通讯
- MySQL--SQL分类
- 基于SSM开发在线考试系统 Java源码
- python爬虫--cookie反爬处理
- JAVA内存分配-通俗讲解
- @Autowired和@Resourse关键字的区别
- Java线程——synachronized关键字的作用(一)
- Ivory Coast Map
- Python map filter reduce enumerate zip 的用法