I recently updated the documentation for Info.Holder() and Info.This() -
they only differ if you use a hidden prototype.

The comment on Signature you quoted is correct - your example code doesn't
use inheritance of the FunctionTemplate but JS inheritance.

On Mon, May 29, 2017 at 9:08 AM Zac Hansen <xax...@gmail.com> wrote:

> My understanding is that the signature picking out the object in the
> prototype chain was the difference between info.This and info.Holder.
> Mostly from reading the thread I linked previously.
>
> Also, this is from the doxygen docs for signature:
>
> > A receiver matches a given signature if the receiver (or any of its
> hidden prototypes) was created from the signature's FunctionTemplate
> <http://v8.paulfryzel.com/docs/master/classv8_1_1_function_template.html>,
> or from a FunctionTemplate
> <http://v8.paulfryzel.com/docs/master/classv8_1_1_function_template.html> that
> inherits directly or indirectly from the signature's FunctionTemplate
> <http://v8.paulfryzel.com/docs/master/classv8_1_1_function_template.html>.
>
>
> On Mon, May 29, 2017 at 12:01 AM, Zac Hansen <xax...@gmail.com> wrote:
>
>> In this thread:
>> https://groups.google.com/forum/#!topic/v8-users/Axf4hF_RfZo
>>
>> it says:
>>
>> > If your function has a signature that says that it must be called on a
>> particular type v8 will search the prototype chain for an object of
>> that type when the function is called.
>>
>>
>> Given my code, I don't understand why making an object that directly sets
>> its prototype as an object capable of calling a function with a signature
>> wouldn't be able to call that same function.
>>
>> Is that thread I linked wrong?   Or am I misunderstanding something?
>>
>> On Sun, May 28, 2017 at 11:57 PM, Jochen Eisinger <joc...@chromium.org>
>> wrote:
>>
>>> A signature requires the object either be constructed from the same
>>> FunctionTemplate (as e.g. new MyType() does), or from a FunctionTemplate
>>> that inherited from the signature's FunctionTemplate.
>>>
>>> Note however that the "info.Holder" would still point at the receiver,
>>> and not the prototype with the matching signature :/
>>>
>>> On Sun, May 28, 2017 at 7:27 PM Zac Hansen <xax...@gmail.com> wrote:
>>>
>>>> I create a "constructor" FunctionTemplate, create a signature from that
>>>> FunctionTemplate, then on that FunctionTemplate's PrototypeObject
>>>> ObjectTemplate, I create a bunch of FunctionTemplate's using the signature
>>>> I generated before.
>>>>
>>>> I can call the function with objects created directly from the
>>>> "constructor" FunctionTemplate.  But if I call it from an object with that
>>>> object in the prototype chain, it doesn't work.
>>>>
>>>> base = new MyType();
>>>> derived = Object.create(base);  // setting .__proto__ has the same
>>>> behavior
>>>>
>>>> base.some_native_function(); <== works
>>>>
>>>> derived.some_native_function(); <== TypeError: Illegal invocation
>>>>
>>>>
>>>>
>>>> Anyone know what I might be doing wrong?  If I remove the signature,
>>>> everything works fine, but then holder == this when calling with derived,
>>>> which isn't what I want.
>>>>
>>>> --Zac
>>>>
>>>> --
>>>> --
>>>> v8-users mailing list
>>>> v8-users@googlegroups.com
>>>> 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 v8-users+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> --
>>> v8-users mailing list
>>> v8-users@googlegroups.com
>>> http://groups.google.com/group/v8-users
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "v8-users" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/v8-users/dR8oI0ZwzG0/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> v8-users+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
> --
> --
> v8-users mailing list
> v8-users@googlegroups.com
> 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 v8-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
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 v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to