Тип Symbol (Знак) — это набор всех значений, отличных от String, которые могут использоваться в качестве ключа свойства Объекта (6.1.7).
Каждое возможное значение Symbol уникально и неизменяемо.
Каждое значение Symbol неизменно содержит связанное значение с именем [[Description]], которое либо undefined, либо является значением String.
6.1.5.1 Хорошо известные Знаки
Общеизвестные Знаки (Well-known symbols) — это встроенные значения Symbol (Знаков), на которые явно ссылаются алгоритмы данной спецификации. Обычно они используются в качестве ключей свойств, значения которых служат точками расширения алгоритма спецификации. Если не указано иное, значения хорошо известных символов используются всеми областями (9.2).
В этой спецификации для ссылки на хорошо известный знак используется запись в форме @@name, где «name» — одно из значений, перечисленных в Таблице 1.
Specification Name (Название спецификации) | [[Description]] | Value and Purpose (Значение и цель) |
---|---|---|
@@asyncIterator | «Symbol.asyncIterator» | Метод, который возвращает AsyncIterator по умолчанию для объекта. Вызывается семантикой оператора for-await-of. |
@@hasInstance | «Symbol.hasInstance» | Метод, определяющий, распознает ли объект-конструктор объект как один из экземпляров конструктора. Вызывается семантикой оператора instanceof. |
@@isConcatSpreadable | «Symbol.isConcatSpreadable» | Свойство с логическим значением, которое, если оно истинно, указывает, что объект должен быть сведен к его элементам массива с помощью Array.prototype.concat. |
@@iterator | «Symbol.iterator» | Метод, возвращающий итератор по умолчанию для объекта. Вызывается семантикой оператора for-of. |
@@match | «Symbol.match» | Метод регулярного выражения, который сопоставляет регулярное выражение со строкой. Вызывается методом String.prototype.match. |
@@matchAll | «Symbol.matchAll» | Метод регулярного выражения, который возвращает итератор, который выдает совпадения регулярного выражения со строкой. Вызывается методом String.prototype.matchAll. |
@@replace | «Symbol.replace» | Метод регулярного выражения, заменяющий совпадающие подстроки строки. Вызывается методом String.prototype.replace. |
@@search | «Symbol.search» | Метод регулярного выражения, который возвращает индекс в строке, соответствующей регулярному выражению. Вызывается методом String.prototype.search. |
@@species | «Symbol.species» | Свойство со значением функции, которое является функцией-конструктором, которая используется для создания производных объектов. |
@@split | «Symbol.split» | Метод регулярного выражения, который разбивает строку по индексам, соответствующим регулярному выражению. Вызывается методом String.prototype.split. |
@@toPrimitive | «Symbol.toPrimitive» | Метод, преобразующий объект в соответствующее примитивное значение. Вызывается абстрактной операцией ToPrimitive. |
@@toStringTag | «Symbol.toStringTag» | Свойство со строковым значением, которое используется при создании строкового описания объекта по умолчанию. Доступен встроенным методом Object.prototype.toString. |
@@unscopables | «Symbol.unscopables» | Свойство, оценивающее объект, чьи собственные и унаследованные имена свойств являются именами свойств, которые исключены из привязок среды «with» для связанного объекта. |
Таблица 1: Общеизвестные Знаки Symbol
Информационные ссылки
Стандарт ECMAScript — Раздел «6.1.5 The Symbol Type» — https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type