This works perfectly. I knew I was being naive, thank you Jakob for
pointing me in the right direction!
On Thursday, June 21, 2018 at 11:28:51 PM UTC+2, Jakob Kummerow wrote:
>
> Well, if you're creating a new FunctionTemplate, then of course your
> existing "car" object isn't an instance of that new class ;-)
>
> Value::InstanceOf is the C++ equivalent of JavaScript "instanceof":
>
> Local<Value> object = Local<Value>::Cast(FindObject("car")); // Assuming
> "car" is, indeed, a Value. Check first if needed.
> Local<Object> car_class = FindObject("Car");
> object->InstanceOf(context, car_class); // Should return Just(true).
> Throws if car_class is not a function.
>
> On Wed, Jun 20, 2018 at 11:00 PM Gonzalo Diethelm <[email protected]
> <javascript:>> wrote:
>
>> I run the following JS code in the Chrome console:
>>
>> // Version 67.0.3396.87 (Official Build) (64-bit)
>>
>> function Car(make) { this.make = make }
>> var car = new Car('Ferrari')
>> car instanceof Car // returns true
>>
>> Now, on my C++ code I get ahold of car (by looking "car" up in the global
>> context), and want to run the equivalent instanceof code, given only the
>> class name "Car" as a string. Notice that I do not have a C++ class /
>> function backing up Car.
>>
>> Just to make it clear, compiling and running "car instanceof Car" as JS
>> code in my C++ code, works totally fine.
>>
>> I naively tried to do something like this, which didn't work:
>>
>> Local<Object> object = FindObject("car"); // this works
>> Local<FunctionTemplate> ft = FunctionTemplate::New(isolate);
>> Local<String> name = String::NewFromUtf8(
>> isolate, "Car", NewStringType::kNormal).ToLocalChecked();
>> ft->SetClassName(name);
>> if (ft->HasInstance(object)) {
>> // this never happens
>> }
>>
>> How can I do this, without manually compiling / running JS code?
>>
>> Thanks!
>>
>> --
>> --
>> v8-users mailing list
>> [email protected] <javascript:>
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
--
--
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.