Symbol.species
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
Le symbole Symbol.species correspond à une fonction utilisée comme constructeur pour créer des objets dérivés.
Exemple interactif
class Array1 extends Array {
static get [Symbol.species]() {
return Array;
}
}
const a = new Array1(1, 2, 3);
const mapped = a.map((x) => x * x);
console.log(mapped instanceof Array1);
// Expected output: false
console.log(mapped instanceof Array);
// Expected output: true
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
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.species> |
Compatibilité des navigateurs
Chargement…