Symbol.species

Le symbole Symbol.species correspond à une fonction utilisée comme constructeur pour créer des objets dérivés.

Description

L'accesseur species permettent aux classes filles de surcharger le constructeur par défaut des objets.

Attributs de Symbol.species
Écrivable Non
Énumérable Non
Configurable Non

Exemples

Dans certains cas, vous pouvez avoir besoin de renvoyer 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 à 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écifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Symbol.species' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'Symbol.species' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
speciesChrome Support complet 51Edge Support complet 13Firefox Support complet 41IE Aucun support NonOpera Support complet 38Safari Support complet 10WebView Android Support complet 51Chrome Android Support complet 51Firefox Android Support complet 41Opera Android Support complet 41Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs Support complet 6.5.0
Support complet 6.5.0
Support complet 6.0.0
Désactivée
Désactivée From version 6.0.0: this feature is behind the --harmony runtime flag.

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi