Since it's a global and nothing explicitly deletes it, it'll live as long as the Module does. When the page is closed, the whole page including Module and all its memory gets garbage collected.
If you're using modularized mode, then you should be able to GC a whole module instance by removing all references to it or into it. -- brion On Thu, Sep 13, 2018, 2:40 AM Jendker <[email protected]> wrote: > Thank you! That works like a charm. > What about the proper cleaning of the object? Will it be taken care of by > some garbage collector in the browser? > > Jendker > > W dniu środa, 12 września 2018 18:16:43 UTC+2 użytkownik Brion Vibber > napisał: >> >> On Wed, Sep 12, 2018 at 7:46 AM Jendker <[email protected]> wrote: >> >>> I am writing an application, where I would need to call the functions of >>> the object existing in C++ from JavaScript, but for now I did not find any >>> reasonable solution reading Embind documentation. >>> I know, that it would be possible to create object in JavaScript and >>> call each function from JavaScript, but I would like to avoid it, just keep >>> the bulk of code in C++. >>> >>> Is there any way to create object in C++ and access it from JavaScript, >>> or create object in JavaScript and access it from C++? (both would be fine) >>> I could just create object as global variable in C++ and call it every >>> time from the JavaScript binded function, which would be accessable, but >>> that would be far from clean design... >>> >> >> You can't directly access C++ global variables via embind, but you can >> export a function which will return the variable (this is known as the >> "singleton pattern") and export that to JavaScript. You need to also bind >> the class, or else embind won't know how to expose the instance methods etc. >> >> Something like this ought to work: >> >> class MyClass { >> ... >> public: >> void doSomething(); >> } >> >> static MyClass* singleton_val; >> >> MyClass* singleton() { >> if (singleton_val == NULL) { >> singleton_val = new MyClass; >> } >> return singleton_val; >> } >> >> EMSCRIPTEN_BINDINGS(my_module) { >> class_<MyClass>("MyClass") >> ... bindings for class ...; >> function("singleton", &singleton, allow_raw_pointers()); >> } >> >> (Or set the value from your main() and ensure it gets called before use.) >> >> >> Then from the JS side you'd call it like: >> >> Module.singleton().doSomething(); >> >> -- brion >> > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" 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. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" 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.
