Why can you delete an overridden property of window?
<p>The <code>delete</code> operator removes a property from an object. If I set a property on <code>window</code>, I can delete it:</p>

<pre><code>window.myProp = 10;
delete window.myProp;
</code></pre>

<p>As <a href="http://perfectionkills.com/understanding-delete/">the article</a> I so often refer others to when it comes to the behaviour of the <code>delete</code> operator states, this is because property assignment does not set the <code>DontDelete</code> attribute (as opposed to variable declaration, which does). </p>

<p>That article also states the following (emphasis added):</p>

<blockquote>
  <p>Note that it is during property creation that attributes are
  determined (i.e. none are set). <strong>Later assignments don’t modify
  attributes of existing property</strong>. It’s important to understand this
  distinction.</p>
</blockquote>

<p>Bearing that in mind, why can I override an existing property of window, <code>alert</code>, and then delete it to <em>return to the original value</em>? Am I missing something obvious? I rarely use the <code>delete</code> operator so that may well be the case.</p>

<p>For example:</p>

<pre><code>window.alert = function() {};
alert("Hi!"); //Nothing happens

delete window.alert;
alert("Hello?"); //Alerts 'Hello?'
</code></pre>

<p>Here's a <a href="http://jsfiddle.net/sKRYR/1/">fiddle</a> to demonstrate that (only tested in Chome, pretty sure IE will not behave this way but don't have access to anything but Chrome right now).</p>
