菜鸡看jQurey源码(1)
来源:互联网 发布:天刀血玲珑捏脸数据导 编辑:程序博客网 时间:2024/06/08 09:58
听说读jquery源码能提升js水平,本着好学态度来读一读源码。先挖一个坑,随时弃坑跑路。
整体结构
jquery整体来看是用一个自执行的匿名函数把一个jQuery的构造函数绑定到全局变量window上。
(function(global,factory){})(window,jqueryFactory)
这里的function需要的global和factory两个参数来自于自执行函数后面括号里传的值,这里可以看到传入的是window和jqueryFactory。这个function里面做了什么事呢?
(function(global,factory){ "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. //这里是源码给的注释,我大致翻译下 //CommonJS和类CommonJS的环境有一个window,所以直接执行factory拿到jQuery。 //像Node.js这种没有window和document的环境就用modelu.exports把factory暴露出去。 module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); }})(window,jqueryFactory)
具体实现
传递给上面函数的参数有两个,global和factory。
( function( global, factory ) {...//省略上面提到的代码} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {....//省略中间代码,jquery内容全部写在这个里面})
可以看的出来传给global的值是一个三元表达式,判断window在不在,不存在就手动传入window,存在就传入this。
typeof window !== "undefined" ? window : this
jQuery的所有重点就是在传入的这个factory。下回有空,再深入这个函数内部看看实现方法。
阅读全文
0 0
- 菜鸡看jQurey源码(1)
- JQurey源码分析
- jqurey
- jqurey
- JQurey
- 第1回——Web前端经典demo(新建用户弹窗,EasyUI+JQurey)
- jqurey中的ajax(老师代码和API中比较)
- 学习jqurey
- jqurey简介
- jQurey选择器
- jQurey基础
- JQurey详解
- JQurey拖拽
- JQurey选择器
- jqurey常用方法(jqurey设计思想)
- jQuery(6)---jQurey鼠标移上移下效果 (凡客帆布鞋)
- jqurey 学习网站
- Jqurey查找页面元素
- 7月总结以及接下来的学习计划
- compile函数与link函数用法
- SSH整合时,tomcat启动报错(unable to load class com.mysql.jdbc.Driver)
- 在Windows上安装Elasticsearch 5.x
- Io流的FileInputStream和FileOutputStream的读取和写入
- 菜鸡看jQurey源码(1)
- 浅析机器学习中的模型选择与调参(cross validation + grid search)
- Java疯狂讲义读书笔记第一章
- spring batch 使用ItemReaderAdapter导致读写无限循环问题
- POWERPC 汇编指令tips
- 全球用户信息泄露事故频发 企业须加强防范
- PHPStorm10提高内存限制的方法
- 判断一个整数能否同时被3和5整除
- 关于angular的三个绑定策略 @、=、&