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
