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
SobrescribirNo
NumerableNo
ConfigurableNo

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:

js
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 GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
species

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Véase también