Actually, thanks to everybody for the replies. I think you were all basically saying the same thing in different ways come to think of it...
On Oct 24, 11:30 pm, Nikola <nik.cod...@gmail.com> wrote: > Thanks Mike, I generally understand closures and your explanation was > very good. > > I think what your saying is that the example "pen" object is just a > local variable to the ready callback. > > Thanks for clearing that up... > > On Oct 24, 10:51 pm, Michael Geary <m...@mg.to> wrote: > > > The concept you're looking for is called a "closure". Search for: > > > javascript closure > > > and you will find all sorts of information about closures. > > > It really has nothing to do with jQuery or the DOM. Closures are part of the > > core JavaScript language and work in any environment where JavaScript is > > implement. For example, Adobe Acrobat supports JavaScript, but it has no > > HTML-oriented DOM, and certainly no jQuery. But closures work exactly the > > same in JavaScript code in a PDF file as they do in a web page. > > > Here's a simple way to understand closures: > > > 1. When you nest one function inside another, the inner function can read > > and write variables declared in the outer function. > > > 2. That *always* works, even if the outer function has already completed > > running and returns to its caller. > > > That's what is happening in your example: You have an outer function - the > > "ready" callback - and an inner function - the "click" handler. The inner > > function can access the variable declared in the outer function, even though > > the inner function runs long after the outer function has returned. > > > -Mike > > > On Sat, Oct 24, 2009 at 5:23 PM, Nikola <nik.cod...@gmail.com> wrote: > > > > It has to be stored somewhere though... > > > > Say, for example, we bind a handler to the click event on the BODY of > > > the document and we log the "pen" object to the console. > > > > $(function(){ > > > > var pen = > > > { > > > type: "Ballpoint", > > > color: "blue", > > > hasInk: true > > > } > > > > $("BODY").click(function(){ > > > console.log(pen) > > > }) > > > > }); > > > > As you can see when you run that code, the "pen" object is logged to > > > the console so it has to be stored somewhere... > > > > Where, is the question. > > > > On Oct 24, 8:01 pm, donb <falconwatc...@comcast.net> wrote: > > > > You can't. It exists for the duration of the ready function, then > > > > it's gone. > > > > > On Oct 24, 7:51 pm, Nikola <nik.cod...@gmail.com> wrote: > > > > > > Hi, I've been trying to understand a little tidbit of jQuery here... > > > > > > Lets say we define an object in the Document "ready" method: > > > > > > $(function(){ > > > > > > var pen = > > > > > { > > > > > type: "Ballpoint", > > > > > color: "blue", > > > > > hasInk: true > > > > > } > > > > > > }); > > > > > > Where in the DOM can we find the pen object?