Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.

View in English Always switch to English

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 ⁨setembro de 2016⁩.

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

Experimente

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 

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® 2026 Language Specification
# sec-symbol.species

Compatibilidade com navegadores

Veja também