Le 28/11/2011 01:07, Allen Wirfs-Brock a écrit :
>
> On Nov 26, 2011, at 11:52 AM, David Bruant wrote:
>
>> Le 24/11/2011 22:29, Tom Van Cutsem a écrit :
>>> 2011/11/24 Allen Wirfs-Brock <al...@wirfs-brock.com
>>> <mailto:al...@wirfs-brock.com>>
>>>
>>>
>>>     If we are going to have a @reflection module that is of broader
>>>     applicability then just writing proxy handlers I'd  like us to
>>>     consider a Mirrors style API.  Otherwise I'm a concern will
>>>     continue to have a proliferation of reflection APIs as we move
>>>     beyond Proxies into other use cases.
>>>
>>>
>>> I'm not sure I understand. Additional reflection functionality can
>>> easily be added to the @reflect module. It need not be exclusive to
>>> Proxies.
>>>  
>>>
>>>     At https://github.com/allenwb/jsmirrors is a first cut of a
>>>     mirrors API that I threw together earlier this year for
>>>     JavaScript.  I don't hold it up as a finished product but it
>>>     could be a starting point for this sort of design.
>>>
>>>
>>>     At the core is a root question whether we want to expose a
>>>     functional or object-oriented API for reflection functionality.
>>>      These are two different styles each of which is probably
>>>     favored by a different subset of our user community.  I suspect
>>>     that everyone knows which sub-community I align with. The main
>>>     argument for the OO style is that it allows creation of client
>>>     code that can be oblivious to the underlying implementation of
>>>     the API.  The allows for more flexible client code that has
>>>     greater potential for reuse.
>>>
>>>
>>> I'm sympathetic to mirror-based APIs myself. However, note that a
>>> mirror-based API would require an extra allocation as opposed to the
>>> proposed API:
>>>
>>> // Proposed API:
>>> Reflect.has(object, name)
>>>
>>> // Mirror-style API:
>>> Mirror.on(object).has(name)
>> I have been thinking about this a lot and I don't find any advantage
>> to "Mirror.on(object).*(...rest)" over "Reflect.*(object, ...rest)"
>> ... for local objects.
>> After reading http://bracha.org/mirrors.pdf , I have realized that
>> the mirror API aims at more than providing reflection with a uniform
>> API for other sorts of objects including, for instance, remote objects.
>>
>> Unfortunately, I am not sure I can go further, because I haven't
>> found a definition of what a remote object is and don't really know
>> how reflecting on them differs from reflecting local objects.
>> Among the questions:
>> * What is a remote object?
>> * How does it differ from a local object?
>> * Do you need a local object to "emulate" a remote object?
>> * Does reflecting on remote objects impose synchronisity (waiting for
>> the remote object to "respond" before telling what the answer is)?
>
> Did you look at my blog posts and the jsmirrors code.  It includes an
> example of using a common mirror API to access both local objects and
> a serialized external object representation. such an representation
> can easily be used to access live remote objects.
I agree, but I don't understand how you can use the same API for both
local and remote objects. Or maybe you don't (retrieve representation
async-ly and create the mirror when the representation is here)?

> In fact, on my to do it, is to extend jsmirros to do so for accessing
> objects in web workers.
I'm looking forward to seeing your implementation.

David
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to