Provided by: libje-perl_0.066-1_all bug

NAME

       JE::Scope - JavaScript scope chain (what makes closures work)

DESCRIPTION

       JavaScript code runs within an execution context which has a scope chain associated with
       it. This class implements this scope chain. When a variable is accessed the objects in the
       scope chain are searched till the variable is found.

       A JE::Scope object can also be used as global (JE) object. Any methods it does not
       understand will be delegated to the object at the bottom of the stack (the far end of the
       chain), so that "$scope->null" means the same thing as "$scope->[0]->null".

       Objects of this class consist of a reference to an array, the elements of which are the
       objects in the chain (the first element being the global object). (Think of it as a
       stack.)

METHODS

       find_var($name, $value)
       find_var($name)
           This method searches through the scope chain, starting at the end of the array, until
           it finds the variable named by the first argument. If the second argument is present,
           it sets the variable. It then returns an lvalue (a JE::LValue object) that references
           the variable.

       new_var($name, $value)
       new_var($name)
           This method creates (and optionally sets the value of) a new variable in the variable
           object (the same thing that JavaScript's "var" keyword does) and returns an lvalue.

           The variable object is the first object in the scope chain (searching from the top of
           the stack) that is a call object, or "$scope->[0]" if no call object is found.

CONSTRUCTOR

       None. Just bless an array reference. You should not need to do this because it is done for
       you by the "JE" and "JE::Object::Function" classes.

SEE ALSO

       JE
       JE::LValue
       JE::Object::Function