title: Weird behavior of `map()`
body: <p><em>A.S.: Variable names were changed for simplicity.</em></p>
  
  <p>My goal is to create new array-like class, every instance of which will have seven numbers, based on whatever quantity of whatever arguments.</p>
  
  <p>So, the code is something like this:</p>
  
  <pre><code>"use strict";
  class SevenNumbers extends Array {
      constructor(...args) { debugger; // !
          // Cut the rest; fill the gaps; convert: first to object, then to primitive
          super(...Object.assign([0, 0, 0, 0, 0, 0, 0], args.slice(0, 7)).map(arg =&gt; +new Number(arg)));
      }
  }
  </code></pre>
  
  <p>It works fine, so <code>new SevenNumbers();</code> returns array of seven numbers, either default (0), or not.<br>
  The <code>debugger</code>-part is important: it tells us about getting into constructor of a <code>SevenNumbers</code> class.</p>
  
  <p>The problem emerges when I try to <code>map()</code> gotten object.<br>
  Try the following code:</p>
  
  <pre><code>var arr = new SevenNumbers(8, 7, 6, 5, 4, 3, 2, 1);
  // SevenNumbers [8, 7, 6, 5, 4, 3, 2] (without the last).
  arr.map(_ =&gt; _);
  // Array [8, 7, 6, 5, 4, 3, 2].
  </code></pre>
  
  <p>First part works in predicted way, but at the 3rd line we're getting in the constructor again!<br>
  The most confusing thing is that the only argument here is the length of <code>arr</code>. Why the length?</p>
  
  <p>Although the final result is correct, this weird behavior interferes with my work in practice, since there are additional calculations in between.</p>
  
  <p>What is wrong here? Why doesn't it just take values from ready custom array, why create new one?</p>