It's not possible, any closure only has access to the variables in scope
when it is defined.
function foo(a,b,c,f)
{
var bar = function() {//has access to everything in foo}
function baz() {//Same as above}
}
var bash = function() { //Does not have access to what's in foo() at any
time}
foo(1,2,3,bash) //Doesn't suddenly give access to foo's locals.
Think of it this way - if what you wanted were possible, then what would
happen if I just invoked bash() instead of passing it to foo()?
There are tricks to achieve something similar to what you want, but they
require changing foo(), in which case you only need to pass arguments to the
f() function.
-Josh
On Sat, Feb 7, 2009 at 6:45 AM, Alex Harui <[email protected]> wrote:
> I thought you said they were anonymous functions. Post a test case.
> I'm not sure what you want to do is possible.
>
>
>
> Alex Harui
>
> Flex SDK Developer
>
> Adobe Systems Inc. <http://www.adobe.com/>
>
> Blog: http://blogs.adobe.com/aharui
>
>
>
> *From:* [email protected] [mailto:[email protected]] *On
> Behalf Of *flexaustin
> *Sent:* Friday, February 06, 2009 12:04 PM
> *To:* [email protected]
> *Subject:* [flexcoders] Re: Getting at variables inside a function that
> accepts a function
>
>
>
> No as the functions are in separate classes and the var a, b, c, d are
> private so in my class that calls the remote function I get Undefined
> property a.
>
> What about putting the vars in as params? Then I think there is a way
> to access the params by order, correct?
>
> So something like this to get at "a" in this example....
>
> public function acceptingFunction (func1:Function=null,
> func2:Function=null):void{
> var a:Number;
> var b:String;
>
> if(func1 && func2){
> if(func1(a=43))return true; <--- inserting local param
> anotherAcceptFunction(func2);
> }
> }
>
> Then do this...
>
> acceptFunction(function():void{ whatever code is to get at params by
> order params[0]?});
>
> --- In [email protected] <flexcoders%40yahoogroups.com>, Alex
> Harui <aha...@...> wrote:
> >
> > I assume just using a,b,c,d didn't work?
> >
> > Alex Harui
> > Flex SDK Developer
> > Adobe Systems Inc.<http://www.adobe.com/>
> > Blog: http://blogs.adobe.com/aharui
> >
> > From: [email protected] <flexcoders%40yahoogroups.com> [mailto:
> [email protected] <flexcoders%40yahoogroups.com>]
> On Behalf Of flexaustin
> > Sent: Friday, February 06, 2009 8:55 AM
> > To: [email protected] <flexcoders%40yahoogroups.com>
> > Subject: [flexcoders] Getting at variables inside a function that
> accepts a function
> >
> >
> > How would I go about getting at variables of a function when I send in
> > an anonymous function so...
> >
> > public function acceptingFunction (func1:Function=null,
> > func2:Function=null):void{
> > var a:Number;
> > var b:String;
> >
> > if(func1 && func2){
> > func1;
> > anotherAcceptFunction(func2);
> > }
> >
> > }
> >
> > public function anotherAcceptFunction(func:Function=null){
> > var c:Number;
> > var d:String;
> >
> > if(func){
> > func
> > }
> > }
> >
> > acceptFunction(function():void{get at vars a,b,c,d from here});
> >
> >
> > I really don't want to extend the orig. function if I can help it, in
> > this case extend the acceptingFunction, as its from some other library.
> >
>
>
>
--
"Therefore, send not to know For whom the bell tolls. It tolls for thee."
Josh 'G-Funk' McDonald
- [email protected]
- http://twitter.com/sophistifunk
- http://flex.joshmcdonald.info/