Baseline Widely available
Le symbole Symbol.species
correspond à une fonction utilisée comme constructeur pour créer des objets dérivés.
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.
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 Compatibilité des navigateurs Voir aussi
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4