title: Is it possible to use Symbol.species for plain objects?
body: <p>The <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species">MDN</a> gives the following working example of <code>Symbol.species</code>:</p>
  
  <blockquote>
  <pre><code>class MyArray extends Array {
    // Overwrite species to the parent Array constructor
    static get [Symbol.species]() { return Array; }
  }
  var a = new MyArray(1,2,3);
  var mapped = a.map(x =&gt; x * x);
  
  console.log(mapped instanceof MyArray); // false
  console.log(mapped instanceof Array);   // true
  </code></pre>
  </blockquote>
  
  <p>The <a href="http://www.ecma-international.org/ecma-262/6.0/#table-1">ECMAScript 2015 specifications</a> says:</p>
  
  <blockquote>
    <p>A function valued property that is the constructor function that is used to create derived objects.</p>
  </blockquote>
  
  <p>The way I understand it it would be mainly used to Duck-Type in some way custom objects in order to trick the <code>instanceof</code> operator.<br>
  It seems very useful but I have not managed to use it on plain objects (FF 44.0a2):</p>
  
  <pre><code>let obj = {
    get [Symbol.species]() {
      return Array
    }
  }
  
  console.log(obj instanceof Array)  //false =(
  console.log(obj instanceof Object) //true
  </code></pre>
  
  <p>Is there any way to use <code>Symbol.species</code> on plain objects in order to trick the <code>instanceof</code> operator?</p>