(sorry, was in a small vacation, can't answer earlier)<br><br>Yes, I'm perfectly aware about what host objects may do (there is even wide-spread phrase in JS community: "do not trust to host objects, they can do almost anything").<br>
<br>From this viewpoint, if to treat these proxies as host objects, then in fact any of discussed broken invariants can be justified. But, I wanted to consider them from the view of casual JS objects.<br><br>Regarding the "subtle difference", if to consider casual JS objects, then no, 8.12.7 (<a href="http://es5.github.com/#x8.12.7">http://es5.github.com/#x8.12.7</a>), step 3.a cleary states that the property is removed.<br>
<br>Dmitry.<br><br><div class="gmail_quote">On Wed, Dec 21, 2011 at 11:53 PM, Tom Van Cutsem <span dir="ltr"><<a href="mailto:tomvc.be@gmail.com">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 class="gmail_quote">2011/12/21 Dmitry Soshnikov <span dir="ltr"><<a href="mailto:dmitry.soshnikov@gmail.com" target="_blank">dmitry.soshnikov@gmail.com</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"><div class="im"><div>
    On <a href="tel:20.12.2011%2017" value="+12012201117" target="_blank">20.12.2011 17</a>:00, Tom Van Cutsem wrote:</div></div><div class="im"><div><blockquote type="cite"><div class="gmail_quote">
        <div>You can (and probably should) advertise a virtual method as
          configurable:true.</div>
      </div>
    </blockquote>
    <br></div>
    I can only `configurable: true', but as we said, to fix broken
    `delete' operator, we need to treat these virtual properties as
    non-configurable. We logically `return false' in `delete' trap and
    have to adjust `getOwnPropertyDescriptor' as well.<br></div></div></blockquote><div><br></div><div>This seems to be a persistent source of confusion about invariants in ES5:</div><div>The fact that a property is configurable:true _implies_ that it can be successfully deleted is _not_ an ECMAScript invariant.</div>

<div>The ES5 spec only requires that configurable:false implies that the property cannot successfully be deleted.</div><div><br></div><div>The difference is subtle, but important. It would not surprise me if there exist host objects that advertise their properties as configurable:true, don't complain when you try to delete them, yet when you query the properties again, they're still there. This is entirely within the bounds of the ES5 spec. MarkM once explained the difference well: <<a href="https://mail.mozilla.org/pipermail/es-discuss/2011-May/014150.html" target="_blank">https://mail.mozilla.org/pipermail/es-discuss/2011-May/014150.html</a>></div>

<div><br></div><div>Cheers,</div><div>Tom</div></div>
</blockquote></div><br>