We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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 Latest Draft (ECMA-262)
Определение 'Symbol.species' в этой спецификации.
Черновик  

Поддержка браузерами

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Возможность 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) Нет Нет Нет

См. также

Метки документа и участники

Внесли вклад в эту страницу: pk.prog, neutral
Обновлялась последний раз: pk.prog,