Тип данных Symbol
По спецификации, в качестве ключей для свойств объекта могут использоваться только строки или символы.
Ни числа, ни логические значения не подходят, разрешены только эти два типа данных.
«Символ» представляет собой уникальный идентификатор.
Создаются новые символы с помощью функции
При создании символу можно дать описание (также называемое имя), в основном использующееся для отладки кода.
Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы.
Описание – это просто метка, которая ни на что не влияет.
Символы особенные они не преобразуются автоматически в строку.
Cтроки и символы – принципиально разные типы данных и не должны неконтролируемо преобразовываться друг в друга.
#Symbol #типы_данных
По спецификации, в качестве ключей для свойств объекта могут использоваться только строки или символы.
Ни числа, ни логические значения не подходят, разрешены только эти два типа данных.
«Символ» представляет собой уникальный идентификатор.
Создаются новые символы с помощью функции
Symbol():
При создании символу можно дать описание (также называемое имя), в основном использующееся для отладки кода.
Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы.
Описание – это просто метка, которая ни на что не влияет.
Символы особенные они не преобразуются автоматически в строку.
Cтроки и символы – принципиально разные типы данных и не должны неконтролируемо преобразовываться друг в друга.
#Symbol #типы_данных
👍2
Symbol.iterator
Symbol.iterator - специальный встроенный
Например, у нас есть объект
- Когда цикл
- Дальше
- Когда
- Результат вызова
#перебираемые_объекты #symbol_iterator
Symbol.iterator - специальный встроенный
Symbol
, который позволяет сделать объект итерируемым.Например, у нас есть объект
range
, который представляет собой диапазон чисел. Чтобы сделать range
итерируемым (и позволить for..of
работать с ним), нам нужно добавить в объект метод с именем Symbol.iterator
.- Когда цикл
for..of
запускается, он вызывает этот метод один раз (или выдаёт ошибку, если метод не найден). Этот метод должен вернуть итератор – объект с методом next
.- Дальше
for..of
работает только с этим возвращённым объектом.- Когда
for..of
хочет получить следующее значение, он вызывает метод next()
этого объекта.- Результат вызова
next()
должен иметь вид {done: Boolean, value: any}
, где done=true
означает, что итерация закончена, в противном случае value
содержит очередное значение.#перебираемые_объекты #symbol_iterator
👍5