--- title: Symbol.species slug: Web/JavaScript/Reference/Objets_globaux/Symbol/species tags: - ECMAScript 2015 - JavaScript - Propriété - Reference - Symbol translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species ---
Le symbole Symbol.species
correspond à une fonction utilisée comme constructeur pour créer des objets dérivés.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
L'accesseur species
permettent aux classes filles de surcharger le constructeur par défaut des objets.
{{js_property_attributes(0,0,0)}}
Dans certains cas, vous pouvez avoir besoin de renvoyer {{jsxref("Array")}} pour les objets de votre classe dérivée MonArray
. Cela permet par exemple d'utiliser le constructeur par défaut lors d'un appel à {{jsxref("Array.map", "map()")}}. De cette façon, ces méthodes renverront un objet Array
plutôt qu'un objet MonArray
. Grâce au symbole species
, vous pouvez donc faire :
class MonArray extends Array { // On surcharge species avec le constructeur parent Array static get [Symbol.species]() { return Array; } } var a = new MonArray(1,2,3); var mapped = a.map(x => x * x); console.log(mapped instanceof MonArray); // false console.log(mapped instanceof Array); // true
Spécification | État | Commentaires |
---|---|---|
{{SpecName('ES2015', '#sec-symbol.species', 'Symbol.species')}} | {{Spec2('ES2015')}} | Définition initiale. |
{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Symbol.species")}}