--- title: Symbol.species slug: Web/JavaScript/Reference/Global_Objects/Symbol/species translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species ---
O símbolo Symbol.species
especifica uma propriedade valor-função que a função construtora usa para criar objetos derivados.
A propriedade acessora de espécies permite que subclasses substituam o construtor padrão para objetos.
{{js_property_attributes(0,0,0)}}
Você pode querer que retorne objetos {{jsxref("Array")}} em sua class derivada de array MyArray
. Por exemplo, quando usar métodos tais como {{jsxref("Array.map", "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ção |
---|
{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}} |
{{Compat("javascript.builtins.Symbol.species")}}