Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery对象的组织_Javascript_Jquery - Fatal编程技术网

Javascript jQuery对象的组织

Javascript jQuery对象的组织,javascript,jquery,Javascript,Jquery,我正在浏览jQuery的源代码。我无法理解jQuery对象的包装策略 (function( window, undefined ) { // Define a local copy of jQuery var jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' r

我正在浏览jQuery的源代码。我无法理解jQuery对象的包装策略

(function( window, undefined ) {

    // Define a local copy of jQuery
    var 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 object
    window.jQuery = window.$ = jQuery;

})(window);
具体来说,我无法理解的是第一行

  • 最外层的未命名容器函数是什么?为什么需要它

  • 为什么容器函数是匿名的

  • 最外层的“偏执狂”需要什么

  • 外部函数创建一个变量作用域IIRC
  • 外圆括号封装了函数。我认为它们实际上不是必需的。它们只是帮助理解
  • 该函数是匿名的,因为它会立即被调用:

    (function(w) {...})(window)
    
  • 外圆括号可防止污染全局窗口对象

  • 容器不必是匿名的,但没有理由命名它并污染全球

  • 外部参数是必需的,因为它需要立即执行。
    (窗口)
    使它立即运行,如果没有外部参数,它将无法工作


  • 这是一本非常好的读物,可能会帮助您理解。

    请看这个问题:)这个问题主要是关于“undefined”参数的。但是那里似乎有一些链接……啊,未定义的
    。这真令人费解,不是吗?我不知道它是干什么的。也许这是一种确保
    参数中只有一项的方法?因此,如果有人引用
    参数
    ,它只有
    窗口
    值?只是猜测,所以可能完全错了。