On Thu, Oct 22, 2009 at 9:57 PM, gMinuses <gminu...@gmail.com> wrote:
> I'm sorry, but I don't quite understand your code.

It took me a while to get it, too.  Obviously Andrea can tell you
better, but perhaps a mere mortal can explain it better to other
mortals.  :-)

First of all, you need to know that jQuery.ajaxSetup(obj) simply
extends the jQuery.ajaxSettings object with the content of obj, so the
call to that function is defining parameters that will be supplied in
every AJAX call.  Clearly we're defining a new method named "ext" for
the jQuery.ajaxSettings object.  And in the end, we're calling that
method.  The result of that call will be an object that looks like
this:

    {
        defaultKey:"defaultValue",
        otherKey:"otherValue",
        test: 123
    }

So the only thing left is the actual definition of "ext".  Nothing to
it, right?  :-)

This is the shell:
>> jQuery.ajaxSettings.ext = (function(anonymous){
>>     // ...
>> })(Function());

This is calling Function(), which returns an anonymous function with
no body and no name (which might be considered something like a blank
constructor), and then passing that in as the parameter "anonymous" to
an unnamed function.  "ext" will be the returned value of the body of
that shell, namely

>>     return function ext(o){
>>         // ...
>>     };

So ext will be a function.

Note that the re-use of the name ext in this declaration is not
necessary.  It allows the function to refer to itself internally
without resorting to arguments.callee.  But since it's never used
here, this could just as easily have been

>>     return function(o){
>>         // ...
>>     };

The body of this function starts with

>>         anonymous.prototype = this.data || {};
>>         var k, result = new anonymous;

The "this" context is jQuery.ajaxSettings, which we've set earlier to
have a parameter "data", that contains, in this case, {defaultKey:
"defaultValue", otherKey: "otherValue"}.  When we set the prototype
for the anonymous constructor to that data object, all object created
from it will have these properties.  Now we create a new instance of
that object, called "result".

>>         if(o){
>>             for(k in o)
>>                 result[k] = o[k]
>>             ;
>>         };
>>         return result;

and populate that resulting object with any parameters we've passed
in, then return it.

Now a call to a jQuery.ajax() method can be supplied the result of
jQuery.ajaxSettings.ext() call as its "data" parameter.

Does that help?

Andrea, is that accurate?

  -- Scott

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to