Reputation:
For example, when you use jQuery('someDiv');
, it's a function, but you can also use jQuery.ajax(...);
.
How is it possible?
Upvotes: 14
Views: 9272
Reputation: 44068
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
Upvotes: 33
Reputation: 200
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...
});
Upvotes: 0