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?
>

Reply via email to