sonofdelphi
sonofdelphi

Reputation: 2036

Organization of the jQuery Object

I was going through the source code of jQuery. I'm having trouble understanding the wrapping strategy for the jQuery object.

(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);

Specifically, what I'm not able to understand stems from the first line.

  1. What is the outermost unnamed container function? Why is it required?

  2. Why is the container function anonymous?

  3. What is the need for the outermost '(' parantheses ?

Upvotes: 1

Views: 279

Answers (2)

Tauren
Tauren

Reputation: 27235

  1. The outer parenthesis prevent polluting the global window object.

  2. The container wouldn't have to be anonymous, but there is no reason to name it and pollute the globals.

  3. The outer parens are required, because it needs to be executed immediately. The (window) makes it run immediately, and without the parens, it won't work.

This article is a pretty good read and will probably help you understand.

Upvotes: 1

Eric
Eric

Reputation: 97575

  1. The outer function creates a variable scope, IIRC.
  2. The outer parenthesis encapsulate the function. I don't think they're actually required. They just aid understanding
  3. The function is anonymous because it is called immediately:

    (function(w) {...})(window)
    

Upvotes: 1

Related Questions