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.

O símbolo Symbol.species especifica uma propriedade valor-função que a função construtora usa para criar objetos derivados.

Experimente

Descrição

A propriedade acessora de espécies permite que subclasses substituam o construtor padrão para objetos.

Property attributes of Symbol.species
Writableno
Enumerableno
Configurableno

Exemplos

Usando espécies

Você pode querer que retorne objetos Array em sua class derivada de array MyArray. Por exemplo, quando usar métodos tais como map() que retorna o construtor padrão, você quer que esses métodos retornem um objeto Array pai, em vez do objeto MyArray. Esses símbolos espécies permitem que você fala isso:

js
class MyArray extends Array {
  // Substitui espécies para a Array pai construtora
  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

Especificações

Specification
ECMAScript Language Specification
# sec-symbol.species

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também