Reputation: 3639
I've been wondering for a long time how jQuery can be both a function and an object property.
You can use it like a function, jQuery(...) and you can use it like a property jQuery.ajax(...)
How can you achieve a such thing in Javascript?
Upvotes: 13
Views: 2080
Reputation: 21406
I think the concept of what exactly is jQuery in terms of code concepts is quite confusing. I ran across this link, which explains the jQuery Architecture in a very simple and easy manner : http://blog.mikecouturier.com/2010/02/beginning-with-jquery-solid-foundation_22.html
So, in short, $ is an alias for a JavaScript function called 'jQuery', and methods invoked by using a dot notation like $.trim ( ) are static methods on the 'JavaScript 'jQuery' function. Note that a function inherits from object in JavaScript, and so a function is an object in JavaScript.
Upvotes: 2
Reputation: 26317
functions are objects in javascript. So you can have your main function
var $ = function() { alert('wat'); }
and then extend it
$.fadeTo = function() { alert('fadeto'); }
Upvotes: 15
Reputation: 42496
Because in JavaScript, functions are objects that can have properties:
function test() { ... }
test.a = function () { ... };
test.a(); // totally valid
Upvotes: 9