I don't know for sure, but won't SetCallAsFunctionHandler help you? yours, anton.
On Tue, Aug 10, 2010 at 11:11 PM, Charles Lowell <[email protected]> wrote: > > > On Aug 10, 8:09 am, Anton Muhin <[email protected]> wrote: >> Sorry, wrong address again. >> >> >> >> On Tue, Aug 10, 2010 at 5:06 PM, Anton Muhin <[email protected]> wrote: >> > Charles, >> >> > I probably miss something here, but why you need FunctionTemplates at >> > all, could not you use only ObjectTemplates? > > How do I implement constructor functions with ObjectTemplate ? > >> >> > yours, >> > anton. >> >> > On Mon, Aug 9, 2010 at 10:58 PM, Charles Lowell >> > <[email protected]> wrote: >> >> Anton, >> >> >> Thanks for the reply. Perhaps it will make it clearer if I provide >> >> some context. I'm asking in the context of The Ruby Racer, which >> >> allows for embedding V8 into Ruby, and in particular what ruby classes >> >> look like from javascript. >> >> >> Currently, we model ruby instances reflected into javascript as >> >> instances created off of a FunctionTemplate which corresponds to that >> >> instance's class. The FunctionTemplate corresponding to the ruby class >> >> has property interceptors which it sets via >> >> FunctionTemplate::InstanceTemplate()->Set{Named/Indexed} >> >> PropertyHandler. >> >> >> The problem comes when we actually embed the ruby classes themselves >> >> into javascript. This is done by having the class's FunctionTemplate's >> >> CallHandler invoke the ruby constructor of the class, and then >> >> associat it with a javascript instance created by calling >> >> GetFunction().NewInstance(). That way, the constructor can be >> >> (optionally) called directly from javascript, and the object's >> >> 'constructor' will point to the right place. >> >> >> However, ruby classes (like javascript constructors) are objects too >> >> with their own properties and methods and so I would like to be able >> >> to intercept access to properties against the constructor function >> >> itself in the same way that I intercept property access on objects. In >> >> one sentence: I want to delegate Function object properties to a ruby >> >> object in the same way that I delegate regular object properties to a >> >> ruby object. >> >> >> Perhaps a little code would shed some light. >> >> >> class SomeClass >> >> #instance method >> >> def one >> >> 1 >> >> end >> >> end >> >> >> #a class method >> >> def SomeClass.two >> >> 2 >> >> end >> >> >> cxt = V8::Context.new >> >> cxt['SomeClass'] = SomeClass >> >> cxt.eval(<<--JS) >> >> var s = new SomeClass() >> >> s.one //=> 1 >> >> s.constructor == SomeClass //=> true >> >> SomeClass.two //=> currently undefined, I would like this to invoke >> >> SomeClass.two() >> >> JS >> >> >> It could be that there is an obvious solution which I've missed, but >> >> does that help frame the question? >> >> >> cheers, >> >> Charles >> >> >> On Aug 9, 11:18 am, Anton Muhin <[email protected]> wrote: >> >>> Sorry, from the right address. >> >> >>> On Mon, Aug 9, 2010 at 8:16 PM, Anton Muhin <[email protected]> wrote: >> >>> > Charles, good day, >> >> >>> > On Mon, Aug 9, 2010 at 7:56 PM, Charles Lowell >> >>> > <[email protected]> wrote: >> >>> >> While we're on the subject of property interceptors and API >> >>> >> asymmetries, I can't figure out to add named and indexed getter/ >> >>> >> setter, etc.. to Function objects inside the javascript runtime. I've >> >>> >> searched extensively for a way to do this, but nothing as reliable as >> >>> >> ObjectTemplate::SetNamedPropertyHandler() >> >> >>> > I don't quite understand what do you mean by 'inside the javascript >> >>> > runtime'? Do you want to invoke JS function? Or add native >> >>> > interceptor to JS function (to be invoked as a constructor)? >> >> >>> > AFAIK currently one can only add interceptors (both named and indexed) >> >>> > to FunctionTemplates. >> >> >>> > BTW, what are you trying to achieve? If you could tell us, maybe >> >>> > there could be found some way out. >> >> >>> > yours, >> >>> > anton. >> >> >>> >> On Aug 6, 12:49 pm, Anton Muhin <[email protected]> wrote: >> >>> >>> From the right address. >> >> >>> >>> On Fri, Aug 6, 2010 at 9:39 PM, Anton Muhin <[email protected]> >> >>> >>> wrote: >> >>> >>> > Charles, >> >> >>> >>> > I just didn't have to time to implement the same functionality for >> >>> >>> > indexed interceptor. Filing a bug and cc'ing you. >> >> >>> >>> > I'll try to implement it, but it might require some time to roll >> >>> >>> > in to >> >>> >>> > make transition to new api smooth. >> >> >>> >>> > yours, >> >>> >>> > anton. >> >> >>> >>> > On Fri, Aug 6, 2010 at 9:31 PM, Charles Lowell >> >>> >>> > <[email protected]> wrote: >> >>> >>> >> Hi, >> >> >>> >>> >> I've noticed a small asymmetry in the interfaces for >> >>> >>> >> IndexedPropertyQuery and NamedPropertyQuery. Specifically that the >> >>> >>> >> indexed version returns just a Boolean instead of and Integer >> >>> >>> >> encoding >> >>> >>> >> property attributes. Is this intentional? Rhino, for example >> >>> >>> >> allows >> >>> >>> >> for specifying attributes for indexed values as well. >> >> >>> >>> >> cheers, >> >>> >>> >> Charles >> >> >>> >>> >> -- >> >>> >>> >> v8-users mailing list >> >>> >>> >> [email protected] >> >>> >>> >>http://groups.google.com/group/v8-users >> >> >>> >> -- >> >>> >> v8-users mailing list >> >>> >> [email protected] >> >>> >>http://groups.google.com/group/v8-users >> >> >> -- >> >> v8-users mailing list >> >> [email protected] >> >>http://groups.google.com/group/v8-users > > -- > v8-users mailing list > [email protected] > http://groups.google.com/group/v8-users > -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
