先理解下js.

Java、C++、C),处理这些语言编写的程序叫编译器(Compiler),相应地对于JavaScript这样的动态语言则叫解释器(Interpreter)。编译器是将源代码编译为另外一种代码(比如jvm虚拟机,会将java文件编译为class文件),而解释器是直接解析并将代码运行结果输出(会直接执行编写的程序代码)。当在网页中嵌入js代码时,浏览器会自动运行你所编写的js代码。迄今为止,js已经有了自己的一个内库,即我们熟知的JavaScript,它可以让我们更容易的操作dom节点(dom后篇另做说明)去解决你所遇到的问题。

   再谈谈jquery.

jquery是一个内库,它精简了JavaScript原生库中已有的对象类型与方法。在jquery没有出现之前,我们一般都是采用getElementById在Dom文档中找到Dom元素,然后取值或设定值,采用innerHTML取其内容或设定其内容。在jquery出现之后,把所有一切都统一在jQuery对象中。使用jQuery就是使用jQuery对象。jQuery实质就是一个查询器。在查询器的基础还提供对查找到的元素进行操作的功能。

     jquery源码.


(function( global, factory ) {
    ....
}(
   ...
   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开始的一段代码,截去了不必要的一环。

这段代码可以看出,在你引入jquery文件时,该立即执行函数会实例化

jQuery.fn = jQuery.prototype = {
    
    .....
  (jQuery.prototype 即声明了名为jQuery的原型方法,至于方法体内有多少属性,这里只列出init部分

 //这里会遍历所有的匿名函数
   init: function( selector, context, rootjQuery ) {...};  
}



然后开始调试关于这段的代码

图1:

jquery 代码执行同步流程 jquery代码在哪里运行_jQuery

图2:

jquery 代码执行同步流程 jquery代码在哪里运行_编译器_02

图3:

jquery 代码执行同步流程 jquery代码在哪里运行_编译器_03


到关于match[2]的描述

else {
                    elem = document.getElementById( match[2] );

                    ....(这段是为了浏览器兼容的处理)
                    return this;
                }



自此。就完成了在使用$('#Id')命名时jquery所做的事情,它即是更丰富了对节点的操作,添加了更多方法以便于使用



未完持续...