The official examples of exposing a Point class seem to assume that there will be a fixed number of instances of it in your program. It is not clear how new instances are allocated in the C++ code, when new is called in Javascript.
How would you expose a class that can have multiple instances? For example, an Image class:
var img1 = new Image( 640, 480 );
var img2 = new Image( 1024, 768 );
img1.clear( "red" );
img2.clear( "black" );
This is the best blog post I could find on exposing C++ objects to V8 Javascript. It goes into deeper detail and breaks it down into smaller steps with code snippets. Be warned: the code snippets have little inconsistencies and it took me several reads to understand. Reading my brief summary beforehand may help:
new
will be called from) to the C++ constructor.new
operator and calls the C++ class constructor. It then wraps the object by calling the wrapObject() method created in step 1.2.Now, the memory allocated in step 2.2 must be delete
'd some time. Update: The next blog entry, "Persistent Handles," covers this in detail.
My notes on the actual code alluded to in these blog posts:
wrapPoint()
method in the blog is actually analogous to the unwrap()
method in the actual code; not wrap()
SetInternalFieldCount(0
, constructorCall