jQuery总体架构的通晓分析

现在精晓了吗。

(function(window, undefined){ var document = window.document; var jQuery
= … … … })(window);

复制代码 代码如下:

复制代码 代码如下:

window.$ = jQuery;

//……

(function() {

所有脚本是一个匿名函数(暂时叫它mainFn吧),函数被加载的时候便先导实施,mainFn可以接收六个参数,执行时只传递一个参数window.

jQuery脚本总体结构来说,有如下形式:

  1. 实际表明下那一个写法的情致:
  2. window
    函数执行时会传入window,那几个流传的window是大局对象(平时为Window)的
  3. 一个性质且window=this,而传播mainFn函数中作为其参数时,它会被贮存在
    4.
    mainFn的调用对象中.在原型链中查找变量的政策是(非嵌套函数):先找找调用
    5.
    目的,再找找全局对象,所以那使得所有mainFn中应用的window时追寻效率更高
  4. undefined
    由于举行时没有传递第二个参数,故变量undefined的值为undefined.早期版
    7.
    本的浏览器中全局对象可能没有undefined属性,所以不可能直接行使它.通常避免
  5. 以此题材的写法是 window.undefined = window.undefined
  1. 切实表达下那一个写法的意趣:
  2. window
    函数执行时会传入window,这一个流传的window是全局对象(平时为Window)的
  3. 一个性能且window=this,而盛传mainFn函数中作为其参数时,它会被贮存在
    4.
    mainFn的调用对象中.在原型链中查找变量的方针是(非嵌套函数):先物色调用
    5.
    对象,再找找全局对象,所以这使得所有mainFn中运用的window时寻找效能更高
  4. undefined
    由于实施时髦未传递第二个参数,故变量undefined的值为undefined.早期版
    7.
    本的浏览器中全局对象可能没有undefined属性,所以不可能一向利用它.平日防止
  5. 其一题材的写法是 window.undefined = window.undefined

var jQuery = window.jQuery = function(selector, context) {
//……
};

对这样的结构不很了解,也没做探索,只晓得和和所谓的

(function( window, undefined ) {
// Define a local copy of jQueryvar jQuery = function( selector,
context
) { // The jQuery object is
actually just the init constructor
‘enhanced’ return new
jQuery.fn.init( selector, context ); },
// Expose jQuery to the global objectwindow.jQuery =
window.$ = jQuery;
})(window);

本条库的结构是这样的:

全套脚本是一个匿名函数(暂时叫它mainFn吧),函数被加载的时候便起始实施,mainFn可以收起六个参数,执行时只传递一个参数window.

var fun=function(window, undefined){
… …
}
fun(window);

接下来在最后让jQuery库中最根本的靶子jQuery成为了window对象的一个属性,并得以简写为“$”。

另外的互补材料:
JQuery是个优良的javascript库,近年来重组它写javascript,看了下源码。
先从全部、全局的看,jQuery的源码几乎都在底下的代码中:

此地让jQuery库中最重大的目的jQuery成为了window对象的一个性质,这样就足以在任何地方像使用
document(document也是window的一个属性)一样拔取jQuery了。也许使用过jQuery的情侣惊叹-我没有使用jQuery对象,一贯使用$的。没错,这是jQuery的同名对象:

  1. (function(window, undefined){
  2. var document = window.document;
  3. var jQuery = …
  4. })(window);

复制代码 代码如下:

复制代码 代码如下:

先是个括号里面是个匿名函数,第二个括号表示立刻执行第一个括号里面的代码。
第一知道,javascript里面是绝非命名空间的,要力保你的javascript函数、对象与其它的不争辨,这里用了javascript的一个技能:你的保有javascript函数、对象都在一个匿名函数里面定义,确保了所定义的函数、对象的实用限制,起到了命名空间的意义。既然功用范围在这多少个匿名函数中,怎么被旁人使用啊?下边看它的上面代码:

})();

js闭包的定义相关,明天查了一些素材,有了些基本的明白。
骨子里是概念了一个大局函数,前一个括号为一个匿名函数,后边为函数的调用。可以这么明白:

Technorati 标签:
JQuery,Javascript,Web前端

你或许感兴趣的篇章:

相关文章