On Mon, Mar 12, 2012 at 4:39 PM, avasilev <[email protected]> wrote:

> Basically I would like to be able to have instanceof working on objects
> that implement native bindings. If I create the object in C++ via
> Function::NewInstance(), then this works as expected. However, I want to be
> able to create an object both via the js constructor, and in C++ code
> without the C++ code calling the js constructor (which happend if I use
> Function::NewInstance()).


If you want v8 to know about the object, the native ctor must tell it. Or
you can...


> Is it possible to do that? I tried to instantiate the object from the
> constructor's prototype template, via
> ctorFunc->PrototypeTemplate()->NewIsntance(), but this does not do the job
> and instanceof does not recognize the object as created by this
> constructor. Any ideas?
>

NewInstance() works for me. Here's an example of how i'm using it:

http://code.google.com/p/v8-juice/source/browse/convert/include/cvv8/ClassCreator.hpp?r=2173#894

The CastFromJS() call there essentially needs to be replaced with your
extract-native-from-JS-Object routine.

If you want to be able to destroy such object from C++ code (don't use
delete - it will leave the v8 bits pointing at dead objects), there's an
example of that here:

http://code.google.com/p/v8-juice/source/browse/convert/include/cvv8/ClassCreator.hpp?r=2173#971

i hope that helps.

-- 
----- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to