<div class="gmail_quote">2011/8/12 David Bruant <span dir="ltr"><<a href="mailto:david.bruant@labri.fr">david.bruant@labri.fr</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">If the reason access is given to the proxy is to give access to the
    prototype, we could as well just give access to the prototype,
    couldn't we?<br></div></blockquote><div><br></div><div>Except |get| and |set| also require the proxy itself. Passing |proxy| to some traps and |prototype| to others complicates matters even more.</div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div bgcolor="#FFFFFF" text="#000000">In the proxy API, the handler, prototype and call/construct traps
    are all related to an internal property (things defined in ES5.1 -
    8.6.2 <a href="http://es5.github.com/#x8.6.2" target="_blank">http://es5.github.com/#x8.6.2</a>)<br>
    What about passing one handler-like object with everything? This
    way, all internals will be available in the argument. The API could
    be reduced to Proxy.create(handler).<br>
    Regarding [[prototype]], handler.prototype could be just a
    initialzation value for a copy of the handler, or handler.prototype
    could be imposed to be a non-configurable, non-writable data
    property (TypeError if not the case) which will not require to do a
    handler copy.<br>
    handler.call and handler.construct would have the rules that
    callTrap and constructTrap have. And typeof Proxy.create(handler)
    === 'function' <=> typeof handler.call === 'function' (to fit
    the ES5.1 definition of a function)<br></div></blockquote><div><br></div><div>I see your point but still prefer the current API. |Proxy.create(handler, proto)| makes it much clearer that |proto| is intended to be fixed at creation time than requiring |handler| to define a non-writable data property named "prototype".</div>
<div><br></div><div>Cheers,</div><div>Tom</div></div><br>