Tuesday, April 17, 2012

How is the "jQuery” var a function and an object?


For example, when you use jQuery('someDiv'); , it's a function, but you can also use jQuery.ajax(...); .



How is it possible?


Source: Tips4all

3 comments:

  1. In JavaScript, functions themselves are objects.

    var x = function () {};
    x.foo = "bar";

    console.log(x.foo); // bar


    EDIT:

    To add onto this:

    var x = function () {
    return 'foo';
    };
    x.bar = function () {
    return 'baz';
    };


    So now:

    console.log(x()); // foo
    console.log(x.bar()); // baz

    ReplyDelete
  2. Here's a Wikipedia article that explains it quite well:

    http://en.wikipedia.org/wiki/First-class_function

    ReplyDelete
  3. I believe the .ajax example is utilizing the jQuery plug-in architecture. I think the AJAX capabilities of jQuery are just one of the many plug-ins you could use.

    The '$' that use see is also just a alias for calling the jQuery.

    One last observation jQuery is defined as (from the jquery-1.4.2.js):

    var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
    },


    and Ajax looks like:

    jQuery.extend({
    ...some other goodness...
    ajax: function( origSettings )
    ...more goodness...
    });

    ReplyDelete