ECMAScript | Тип Symbol

ECMAScript | Тип Symbol

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