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

Reply via email to