今天刚好是前一个项目上线的第二天,所以今天很闲,没什么事情做,突发奇想,想看看jQuery的源码。遂将看懂的一点记录与此,后续还会更新。

  今天主要说一下jQuery的初始化,jQuery初始化的时候都是没有用new关键字生成的,所以,下面试想,如果不用new,jQuery的源码应该是这样的

var jQuery = function(selector, context) {return new jQuery(selector, context);
}

但是,但凡有一点编程基础的都会知道,这段代码会进入死循环,那jQuery源码到底是怎么解决的呢?带着这个疑问,请继续看下去。

  jQuery初始化源码如下: 

var jQuery = function (selector, context) {// The jQuery object is actually just the init constructor 'enhanced'// Need init if jQuery is called (just allow error to be thrown if not included)return new jQuery.fn.init(selector, context);
}
jQuery.fn = jQuery.prototype = {// The current version of jQuery being usedjquery: version,constructor: jQuery,// The default length of a jQuery object is 0length: 0,init:function(){...}//一些实例方法...
}

最关键的一句

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn

  不知道大家是怎么理解的,反正我是看了几遍没看懂。
  最后,网上查阅资料,终于弄懂了,其实特别的简单,就是关于js原型的东西,一画图,就Ok了。自己画的图,比较丑。
  

不过,网上找了一张好看的图

大概就是这样了,不知道人们看不看的懂,有时候觉得会吹牛逼也是一种能力。

jQuery中关于jQuery.fn.init.prototype = jQuery.fn的解读相关推荐

  1. jquery中Live方法不可用,Jquery中Live方法失效

    jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...

  2. jQuery中live函数的替代-【jQuery】

    在老版本的jQuery中,当需要对页面上某个由ajax加载的某片段的页面内容响应事件时,可以使用live函数来响应其事件,比如: $('a').live('click', function() { b ...

  3. jQuery中的页面载入($()、ready(fn)、onload)

    用jQuery进行页面载入时有集中方式,我们通过例子来说明一下: 第一种(通过window.onload()): <!DOCTYPE html> <html><head& ...

  4. jQuery中的几个模块总结

    Query插件,以备并希望在前端方面有所长进.请批评指正. 一,类型判断全解 JQuery判断类型扩展方法:$.type() 1 /*type: function( obj ) {2 if ( obj ...

  5. 1号店案例html源码_手把手教一起写jQuery版mini源码,分析jQuery的优势

    适合人群 本文适合0.5~3年的前端开发人员,以及想了解jQuery是什么的小伙伴们. 前言 谈谈个人对jQuery的看法. 如果你是一个五年以上的开发人员,相信你一定认识了解jQuery.这好比你十 ...

  6. jQuery源码解析对象实例化与jQuery原型及整体构建模型分析(一)

    //源码剖析都基于jQuery-2.0.3版本,主要考虑到兼容IE 一.关于jQuery对象实例化的逻辑: 整个jQuery程序被包裹在一个匿名自执行行数内: (function(window,und ...

  7. Jquery源码中的Javascript基础知识(四)— jQuery.fn.init方法

    $() 即调用了jQuery.fn.init方法 jQuery = function( selector, context ) {return new jQuery.fn.init( selector ...

  8. jQuery分析(3) - jQuery.fn.init

    1.前言 上一篇jQuery分析(2)中了解了jQuery库的骨架实现原理,这就好比摇滚音乐,摇滚音乐不是某种音乐他就像一个音乐盒子,里面包含了各种不同的摇滚风格(山地.朋克.乡村.流行.硬摇.金属. ...

  9. JQuery中的动画效果

    show() hide() slideUp slideDown fadeIn fadeOut animate : 自定义动画 JQuery中的动画效果.html <!DOCTYPE html&g ...

  10. jquery中apply与call的使用

    每一个Function对象都有一个apply()方法和一个call()方法 A对象有一个方法,而B对象因为某种不可言说的情况也需要用到一样的方法,那么这时候我们是单独为B扩展个方法呢,还是借用一下A的 ...

最新文章

  1. LauncherApplication
  2. 尺度空间(Scale space)理论
  3. angularjs的ng-repeat回调
  4. Orleans的集群构建
  5. 华农java答案_华南农业大学JAVA程序设计A卷答案.doc
  6. vs 中自带的代码混淆器 Dotfuscator (图)
  7. 建立域信任关系后,查找位置中看不到另一个域的信息
  8. HTML5 第六章盒子模型课后作业
  9. 天津市高分二号卫星影像获取/高分一号卫星影像
  10. HCIE大师之路(二)——IPSec Over GRE综合实验
  11. CF 934D 数学 推导多项式展开
  12. 卡特彼勒CAT SIS 售后服务系统3D零件图系统软件 2019年最新版
  13. 小红书4大主要人群的消费特征,你占了几个?
  14. mysql perl教程_使用 Perl 的 MySQL 事务
  15. 【信息系统项目管理师】第二十五章 量化的项目管理(考点汇总篇)
  16. 沈航计算机学院杨华,BCD码的加法.doc
  17. 金融业数字化转型全面提速背后 看华为如何与时俱进
  18. Word2vec词向量工具带你发现不一样的《天龙八部》
  19. 记一次oracle HAIP引发的数据库问题
  20. 正态分布、单 (双) 样本 T 检验

热门文章

  1. ORacle查询时显示同义词转换不再有效
  2. oracle box怎么全屏,Oracle VM VirtualBox 虚拟机设置全屏与共享
  3. css边框图片border-image切图原理
  4. 计算机办公软件的课件,计算机常用办公软件ppt课件
  5. 第三阶段应用层——1.9 数码相册—在LCD上显示BMP图片
  6. 无法加载计算机管理,电脑中无法打开Internet选项中的管理加载项如何解决
  7. 访问阿里云服务器配置的ftp后,报错227 entering passive mode
  8. 摄影知识——光圈和快门的组合
  9. 大数据用户画像方法与实践(干货 转帖)
  10. 如何注册网站域名?申请域名详细教程