Для чего нужен Symbol()
назначение объекта-обертки Symbol() в JavaScript
В этой небольшой статье мы разберем, чем может быть полезен Symbol()
в JavaScript.
Данные примитивного типа symbol
анонимны, уникальны и неизменяемы. По сути, экземпляр таких данных является уникальным идентификатором, созданным с помощью объекта-обертки Symbol()
:
let firstSymbol = Symbol();
typeof(firstSymbol); //symbol
Для экземпляра данных symbol
можно создать описание, используемое для отладки, но не для доступа к самому символу. Например, так:
let dummy = Symbol("dummy");
console.log(dummy); // Symbol(dummy)
Чем полезны символы?
Символы позволяют создавать “скрытые” свойства объектов, которые невозможно перезаписать или просмотреть из других частей кода.
Символы можно использовать в качестве уникальных значений вместо строчных и числовых данных:
let statuses = {
PENDING: Symbol('Pending'),
REQUESTED: Symbol('Requested'),
IN_PROGRESS: Symbol('In progress'),
COMPLETED: Symbol('Completed'),
ERROR: Symbol('Error')
};
// complete a task
myObject.setStatus(statuses.COMPLETED);
Еще символ можно применить, как вычисляемое имя свойства объетка:
let status = Symbol('status');
let task = {
[status]: statuses.REQUESTED,
description: 'Request'
};
console.log(task);
//{description: "Request", Symbol(status): Symbol(Requested)}
Наконец, напоминаю, что символ - это всего-лишь уникальный идентификатор, и существует множество других полезных способов для его использования в коде.
Спасибо за внимание.