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
позволит вам это сделать:
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 Language Specification # sec-symbol.species |
Совместимость с браузерами
BCD tables only load in the browser