Символ (Symbol) - это новый тип данных в стандарте ECMAScript 6 (ES6), который представляет собой уникальный и неизменяемый идентификатор. Символы используются для создания уникальных свойств объектов, которые не могут быть перезаписаны или скрыты другими свойствами.
Символы объявляются с помощью функции Symbol()
, которая возвращает новый уникальный символ каждый раз при вызове:
const symbol1 = Symbol()
const symbol2 = Symbol()
console.log(symbol1 === symbol2) // Вывод: false
В этом примере, мы создаем два разных символа с помощью функции Symbol()
, которые сравниваются между собой с помощью оператора === . Эти символы уникальны и не равны друг другу.
Символы могут также иметь описатель (description), который используется для создания более понятных имен символов:
const symbol = Symbol("My symbol")
console.log(symbol.description) // Вывод: "My symbol"
В этом примере, мы создаем символ с описателем “My symbol” и получаем его описание с помощью свойства description
.
Символы могут быть использованы для создания уникальных свойств объектов, которые не могут быть перезаписаны или скрыты другими свойствами:
const symbol = Symbol("My symbol")
const obj = {
[symbol]: "value",
}
console.log(obj) // Вывод: { [Symbol(My symbol)]: "value" }
console.log(obj[symbol]) // Вывод: "value"
В этом примере, мы создаем символ symbol
с описателем “My symbol” и используем его для создания свойства объекта obj
. Это свойство не может быть перезаписано или скрыто другими свойствами, такими как свойства с именами строк.
Символы также используются вместе с встроенными методами объектов, такими как Object.getOwnPropertySymbols()
и Reflect.ownKeys()
, для доступа к символьным свойствам объектов.
Таким образом, символы предоставляют удобный способ создания уникальных идентификаторов в JavaScript, которые не могут быть перезаписаны или скрыты другими свойствами. Они могут быть использованы для создания уникальных свойств объектов и доступа к ним с помощью встроенных методов объектов.