Symbol.species
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
El símbolo conocido como Symbol.species
especifica una propiedad con valor de función que la función constructora utiliza para crear objetos derivados.
Pruébalo
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
Descripción
La propiedad de acceso species
permite a las subclases anular el constructor por defecto de los objetos.
Atributos de la propiedad Symbol.species | |
---|---|
Sobrescribir | No |
Numerable | No |
Configurable | No |
Ejemplos
Usando species
Es posible que quieras devolver objetos Array
en tu clase array derivada MyArray
. Por ejemplo, al utilizar métodos como map()
que devuelven el constructor por defecto, quieres que estos métodos devuelvan un objeto Array
padre, en lugar del objeto MyArray
. El símbolo species
te permite hacer esto:
class MyArray extends Array {
// Sobrescribir especies al constructor de la matriz Array
static get [Symbol.species]() {
return Array;
}
}
let a = new MyArray(1, 2, 3);
let mapped = a.map((x) => x * x);
console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array); // true
Especificaciones
Specification |
---|
ECMAScript® 2025 Language Specification # sec-symbol.species |
Compatibilidad con navegadores
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
species |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support