<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 28, 2015 at 11:08 AM, Domenic Denicola <span dir="ltr"><<a href="mailto:d@domenic.me" target="_blank">d@domenic.me</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">From: Mark S. Miller [mailto:<a href="mailto:erights@google.com">erights@google.com</a>]<br>
<br>
</span><span class="">> In this situation, it will try and succeed. This more closely obeys the intent in the original code (e.g., the comment in the jQuery code), since it creates a non-configurable property on the *Window* W. It does not violate any invariant, since all that's observable on the *WindowProxy* (given the rest of your draft spec, which remain unchanged) is a configurable property of the same name.<br>
<br>
</span>Ah, I see! So then another non-intuitive (but invariant-preserving) consequence would be:<br>
<br>
```js<br>
Object.defineProperty(window, "prop", { value: "foo" });<br>
<br>
var propDesc = Object.getOwnPropertyDescriptor(window, "prop");<br>
<br>
if (propDesc.configurable) {<br>
  Object.defineProperty(window, "prop", { value: "bar" });<br>
<br>
  // this will fail, even though the property is supposedly configurable,<br>
  // since when it forwards from the WindowProxy `window` to the underlying<br>
  // Window object, it the Window's [[DefineOwnProperty]] fails.<br>
}<br>
```<br>
<br>
Am I getting this right?<br>
</blockquote></div><br>Exactly, yes. And again, if window is an ES6 proxy rather that a WindowProxy, it could also cause this behavior, so it doesn't create any situation which is not otherwise possible.<br><br>The key points are:</div><div class="gmail_extra"><br></div><div class="gmail_extra">1) The throw does (arguably) better obey the code's intent, since the property mostly acts like a non-configurable property until the window is navigated.</div><div class="gmail_extra"><br></div><div class="gmail_extra">2) If a window navigation happens between your first step and your second, the second step may well succeed, which is what we (arguably) want, but which would have been prohibited if propDesc.configurable evaluated to true.<br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">    Cheers,<br>    --MarkM</div>
</div></div>