<div dir="ltr">does `Proxy` trap `Object.getPrototypeOf` somehow ?<div style>If yes, why do you think having two namespaces for the prototype operation is better?</div><div style>If not, why do you think that is not needed in case of getting the prototype?</div>
<div style><br></div><div style>In any case, how `Object.setPrototypeOf` differs anyhow compared to how the `__proto__` was suposed to be retrieved or set before Allen proposal (if not that is cleaner, less obtrusive, and more elegant plus it works consistently with `Object.create(null)` objects too)?</div>
<div style><br></div><div style>Wasn't `__proto__` demanding some trap too on a generic `Proxy`?</div><div style><br></div><div style>I personally think that having `getPrototypeOf` in the `Object` and `setPrototypeOf` in the `Reflect` is inconsistent and developers should be aware of what they are doing regardless the chosen namespace.</div>
<div style><br></div><div style>Thanks for any extra clarification for my questions.</div><div style><br></div><div style>Regards</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 20, 2013 at 8:17 AM, Tom Van Cutsem <span dir="ltr"><<a href="mailto:tomvc.be@gmail.com" target="_blank">tomvc.be@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2013/5/9 Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>></span><div class="im">
<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Andreas Rossberg wrote:</div><div>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  (And let's bury setPrototypeOf quickly.)<br>
</blockquote>
<br></div>
Bury how? IIUC this goes in main spec alongside ES5's Object.getPrototypeOf, requires a proxy trap, etc.</blockquote><div><br></div></div><div>Here's one potential alternative: add Reflect.setPrototypeOf but not Object.setPrototypeOf.<br>

</div><div><br></div><div>Rationale:</div><div>- Under Allen's proposal upstream of this thread, proxies will require a setPrototypeOf trap, regardless of whether we expose Object.setPrototypeOf (proxies will need to intercept protosetter.call)</div>

<div>- every trap in the Proxy API has a corresponding method with matching signature in the reflection module to make it easy for proxies to forward intercepted ops.</div><div>- it follows that we'll have Reflect.setPrototypeOf in the reflection module</div>

<div><br></div><div>The question then becomes whether we additionally want to expose an Object.setPrototypeOf alias for this method.</div><div><br></div><div>Putting the setPrototypeOf method only in the reflection API but not on Object could be a way of telling developers that setting the prototype of an object is a reflective operation, to be used with some care, not a general utility function to be used routinely.</div>

<div><br></div><div>Cheers,</div><div>Tom</div></div></div></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>