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?
functions are objects in javascript. So you can have your main function
var $ = function() { alert('wat'); }
and then extend it
$.fadeTo = function() { alert('fadeto'); }
Because in JavaScript, functions are objects that can have properties:
function test() { ... }
test.a = function () { ... };
test.a(); // totally valid
test.a be defined within the initial function test() {...} declaration, or must test.a be declared separately in order to be accessible outside of test()? In other words, is it possible to define the a property from within the test(){...} declaration such that it is still accessible from outside of test()? I cannot seem to find the answer anywhere else.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.