If you have a v8::Function you can pass the global state as first argument to Function::Call.
best -jochen On Thu, Jan 23, 2014 at 10:07 PM, Kenton Varda <[email protected]> wrote: > Hi v8-users, > > I'm trying to figure out how, from the C++ API, I can create a function > that effectively has some dynamically-captured state, as a closure might > have in pure Javascript. I need to generate many different instances of > the same function but with different captured values. > > In Javascript, I might write: > > var makeFoo(state) { > return function(arg) { > doSomething(state, arg); > } > } > > I'm trying to figure out how to express this through the C++ bindings, but > it seems like it is not possible: FunctionTemplate's docs say it can only > create one instance of a function per context, and that instance lasts for > the lifetime of the context. So, creating many different FunctionTemplates > appears to be a bad idea. But v8::Arguments doesn't appear to contain any > inputs that aren't either provided by the caller or provided to the > FunctionTemplate, so I guess there's no place to put "captured" data. > > Is this correct, or did I miss something? > > I realize that I can design my C++ bindings in a procedural way (without > captures) and then wrap them in a Javascript wrapper to get the API I want, > which is probably what I'll end up doing, but wanted to verify that this is > really the only option. > > Thanks, > -Kenton > > -- > -- > v8-users mailing list > [email protected] > http://groups.google.com/group/v8-users > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
