<div class="gmail_quote">2011/9/8 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;">
<u></u>

  
    
    
  
  <div bgcolor="#ffffff" text="#000000">So the third argument would be the object the proxy would become.
    This sounds like a reasonable idea but is a bit different from the
    original fix proposal which created a fresh object based on an
    object description (pdmap).<br>
    I guess I should ask: why in the original design did the author had
    to return a description of the object to be returned rather than
    creating the object himself and return it? To avoid returning a
    proxy, maybe?<font color="#888888"><br></font></div></blockquote><div><br></div><div>In order for the proxy to safely "become" a target object, the target object should be newborn (i.e. no other object should have a live reference to the target object). Otherwise, we violate the stability of ===. Consider:</div>
<div><br></div><div>var o = {};</div><div>var p = Proxy.create(handler, proto, o);</div><div>o === p // false</div><div>Object.preventExtension(p); // assume p now becomes o</div><div>o === p // true</div><div><br></div><div>
That's why fix() returns a description of a fresh object to create, rather than a fresh object itself.</div><div><br></div><div>Cheers,</div><div>Tom</div></div>