Symbol — это новый тип данных, добавленный в ECMAScript 2015 (ES6). Он представляет уникальные и идентифицируемые значения в JavaScript. Каждый символ уникален, и два символа никогда не будут равны друг другу.
let symbol1 = Symbol();
let symbol2 = Symbol('foo');
console.log(typeof symbol1); // symbol
console.log(typeof symbol2); // symbol
Мы можем создавать символы с помощью глобальной функции Symbol()
. Каждый символ может иметь необязательное описание, которое может быть полезно при отладке или чтении кода.
Символы могут быть использованы в качестве идентификаторов для свойств объектов:
let obj = {
[Symbol('id')]: 42
};
console.log(obj[Symbol('id')]); // undefined
console.log(obj[Object.getOwnPropertySymbols(obj)[0]]); // 42
В примере выше мы создаем символ id
и используем его как идентификатор для свойства объекта obj
. Обратите внимание, что каждое использование символа создает новый символ, и поэтому обращение к его значению будет возвращать undefined
. Чтобы получить доступ к значению свойства объекта, нам нужно использовать метод Object.getOwnPropertySymbols()
, чтобы получить все символьные свойства объекта и обратиться к соответствующему свойству.