Symbol.species —
известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.
Атрибуты свойстваSymbol.species |
|
---|---|
Записываемое | нет |
Перечисляемое | нет |
Настраиваемое | нет |
Описание
Свойство Symbol.species
, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.
Примеры
Вам может понадобиться возвращать объекты типа Array
в методах вашего производного класса MyArray
. Например, при использовании метода вроде map()
, использующего конструктор по умолчанию, вам может потребоваться возвращать объект родительского типа Array
, вместо MyArray
. Символ species
позволит вам это сделать:
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
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Symbol.species' в этой спецификации. |
Стандарт | Изначальное определение. |
ECMAScript 2017 Draft (ECMA-262) Определение 'Symbol.species' в этой спецификации. |
Черновик |
Поддержка браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | 51 | 41 (41) | Нет | Нет | Нет |
Возможность | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | Нет | 5 | 41.0 (41) | Нет | Нет | Нет |