ECMAScript | Тип Symbol — efim360.ru

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

Поделись записью