Symbol JS: новый тип данных для работы со символами в JavaScript
Symbol в JavaScript - это примитивный тип данных, который представляет собой уникальный и неизменяемый идентификатор. Он был добавлен в стандарт языка в ECMAScript 6.
Создание символа осуществляется при помощи глобальной функции Symbol():
let symbol = Symbol();
Каждый созданный символ уникален, то есть даже если вы создадите два символа с одинаковой строкой в качестве аргумента, они будут представлять собой разные символы:
let symbol1 = Symbol("foo");
let symbol2 = Symbol("foo");
console.log(symbol1 === symbol2); // false
Это может быть полезно, например, для создания уникальных ключей в объектах или для создания методов объектов с независимыми именами.
const USER = Symbol('User Key');
let user1 = {
name: 'John',
age: 25,
[USER]: 'user_1'
};
let user2 = {
name: 'Henry',
age: 27,
[USER]: 'user_2'
};
console.log(user1[USER]); // 'user_1'
console.log(user2[USER]); // 'user_2'
Symbol также поддерживает описание, которое может быть использовано для создания более информативных сообщений об ошибках и любых других целях, где требуется строка. Например:
let sym = Symbol('My sym');
console.log(sym.toString()); // 'Symbol(My sym)'
console.log(sym.description); // 'My sym'
В целом Symbol является очень мощным инструментом, который может быть использован для создания уникальных идентификаторов, ключей и методов объектов, а также для более информативных сообщений об ошибках и других целях.