title: JavaScript for...in on array iterates through unenumerable properties
body: <p>According to <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in" rel="nofollow">MDN</a> and various other sources, <code>for...in</code> iterates over only enumerable properties. By enumerable I assume those which return <code>false</code> for <code>propertyIsEnumerable()</code>. Still, the following code on <a href="http://steamcommunity.com" rel="nofollow">this</a> page</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var TstArr = [0];
  for (var A in TstArr) {
   console.log("In",TstArr.propertyIsEnumerable(A),TstArr[A]);
  };</code></pre>
  </div>
  </div>
  </p>
  
  <p>logs this:</p>
  
  <pre><code>In false function each()
  In false function eachSlice()
  In false function all()
  In false function any()
  </code></pre>
  
  <p>I know that <code>for...in</code> is not advised for arrays and I already suspect that array was extended by Prototype, that is not my question. My question is why it enumerates what it supposedly shouldn't.
  This is the same both for FF &amp; Chrome.</p>