No, it's not wrapped in an IIFE. On Monday, November 28, 2016 at 5:59:54 AM UTC-2, Ben Noordhuis wrote: > > On Sat, Nov 26, 2016 at 2:19 AM, George Marques <[email protected] > <javascript:>> wrote: > > Hey, it's me again. > > > > I'm trying to use a global JavaScript file with internal definitions > from a > > game engine. So far so good, but I need to get one of those constructors > > defined in the JavaScript to create a new object in C++ land. > > > > What I tried is something like this: > > > > v8::Local<v8::Context> ctx = p_isolate->GetCurrentContext(); > > v8::Local<v8::Function> constructor = > > v8::Local<v8::Function>::Cast(ctx->Global()->Get( > > v8::String::NewFromUtf8(p_isolate, "Vector2"))); > > > > v8::Local<v8::Value> cargs[] = { v8::Number::New(p_isolate, vec.x), > > v8::Number::New(p_isolate, vec.y) }; > > v8::Local<v8::Object> instance = > > v8::Local<v8::Object>::Cast(constructor->CallAsConstructor(2, cargs)); > > > > However, this give an error as it can't find the Vector2 constructor. I > can > > use the constructor normally in JavaScript land. > > > > If I make the Vector2 constructor as a C++ function, this code works > > perfectly. However, I believe it has a better performance to reimplement > > those core types in JS than to keep passing around an object and calling > C++ > > functions with a bunch of handles (I might be wrong though). This would > also > > mitigate the memory management overhead, I think, which I haven't yet > got > > into. > > The constructor should be visible from C++. Is your JS code wrapped in an > IIFE? >
-- -- 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/d/optout.
