--- title: Symbol.species slug: Web/JavaScript/Reference/Global_Objects/Symbol/species tags: - ECMAScript6 - Experimental - JavaScript - Свойство - Символы translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species ---
Symbol.species — известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.
Свойство Symbol.species, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.
Вам может понадобиться возвращать объекты типа {{jsxref("Array")}} в методах вашего производного класса MyArray. Например, при использовании метода вроде {{jsxref("Array.map", "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
| Спецификация | Статус | Комментарий |
|---|---|---|
| {{SpecName('ES6', '#sec-symbol.species', 'Symbol.species')}} | {{Spec2('ES6')}} | Изначальное определение. |
| {{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}} | {{Spec2('ESDraft')}} |
{{Compat}}