Symbol.species

Esta tradução está incompleta. Ajude a traduzir este artigo em inglês

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

Descrição

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

Property attributes of Symbol.species
Writable no
Enumerable no
Configurable no

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:

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

Especificação
ECMAScript (ECMA-262)
The definition of 'Symbol.species' in that specification.

Compatibilidade de navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
speciesChrome Full support 51Edge Full support 13Firefox Full support 41IE No support NoOpera Full support 38Safari Full support 10WebView Android Full support 51Chrome Android Full support 51Firefox Android Full support 41Opera Android Full support 41Safari iOS Full support 10Samsung Internet Android Full support 5.0nodejs Full support 6.5.0
Full support 6.5.0
Full support 6.0.0
Disabled
Disabled From version 6.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Veja também