Тип 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