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.

Symbol.species известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.

Атрибуты свойства Symbol.species
Записываемоенет
Перечисляемоенет
Настраиваемоенет

Описание

Свойство Symbol.species, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.

Примеры

Вам может понадобиться возвращать объекты типа Array в методах вашего производного класса MyArray. Например, при использовании метода вроде map(), использующего конструктор по умолчанию, вам может потребоваться возвращать объект родительского типа Array, вместо MyArray. Символ species позволит вам это сделать:

js
class MyArray extends Array {
  // Перегружаем species для использования родительского конструктора Array
  static get [Symbol.species]() {
    return Array;
  }
}
var a = new MyArray(1, 2, 3);
var mapped = a.map((x) => x * x);

console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array); // true

Спецификации

Specification
ECMAScript® 2025 Language Specification
# sec-symbol.species

Совместимость с браузерами

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

Смотрите также