
Что такое символ Javascript? и зачем мне когда-либо нужно было бы использовать один? Здесь мы рассмотрим самые основные принципы этого
Символ — это примитивное значение, такое же, как строки, числа, логические значения, неопределенные и нулевые значения. И точно так же, как и другие примитивные значения, сам символ неизменен. Конечно, вы можете изменить переменную, указывающую на любое из этих значений, но само значение изменить нельзя. Например, вы не можете переопределить число 1, и true всегда будет true.
Но символы также подобны объектам в том смысле, что они созданы. Когда вы хотите использовать символ, вы создаете новый экземпляр. Это означает, что каждый раз, когда вы создаете символ, вы создаете новое неизменное примитивное значение. Обратите внимание, что переданный аргумент является описанием символов и обычно используется в целях отладки.
Как вы можете видеть здесь, даже символы, которые выглядят совершенно одинаково, на самом деле представляют собой разные фрагменты данных. Каждый раз, когда создается символ, вы можете представить, что он имеет свой уникальный идентификатор, который отличает его от любого другого символа. Просто имейте в виду, что вы не можете создать экземпляр символа с помощью оператора new, как функцию или класс. Просто позвоните Symbol() для создания экземпляра.
И где эти символы могут быть полезны? Отличным местом для использования символа является его свойство объекта. Символы были представлены в ES2015 и должны были быть обратно совместимы. Для этого символы должны были полностью игнорироваться в циклах for..in (а также в методе JSON.stringify, поскольку JSON поддерживает только строковые ключи). Это позволяет вам устанавливать «секретные» свойства для объектов, к которым можно получить доступ в случае необходимости, но это не изменит «форму» или бизнес-логику этого свойства. Например, если вам нужны данные, которые описывают объект, но не нужны при передаче объекта для выполнения вычислений, символ — отличный выбор. Но помните, даже если цикл for..in ничего не знает о вашем символе, вы все равно можете проверить все символы на объекте. Вот почему слово «секрет» заключено в кавычки, и поэтому никогда не следует пытаться скрыть в нем конфиденциальные данные.
Еще одно хорошее применение символов — большие наборы данных. Например, если вы создаете много пар ключ-значение для объекта, может быть сложно найти уникальные имена для каждого отдельного ключа. Даже если вы сгенерируете случайные строки для своих ключей, вы все равно рискуете столкнуться где-то в будущем. Поскольку каждый символ уникален, если вы установите ключи с символами, вам никогда не придется беспокоиться о замене данных вместо их добавления.
Важно помнить, что существует и другая вариация символа JavaScript. Мы также можем создавать глобальные символы, к которым можно получить доступ во всей вашей кодовой базе. Эти глобальные символы отличаются тем, что они не все являются уникальными экземплярами символа, но уникальны для переданных им аргументов key. Когда вы вызываете Symbol.for(“description”), вам либо возвращается уже существующий глобальный символ, либо новый символ, если он еще не создан. Вы также можете вызвать Symbol.keyFor(symbol) , где вы передаете символ. Если этот символ существует глобально, вам будет возвращен его «ключ» или «описание», в противном случае вы просто вернете undefined.
Существует множество статических и экземплярных методов, связанных с символами, которые могут облегчить вашу жизнь и заслуживают внимания. И хотя символы могут быть не тем, к чему вы стремитесь в повседневном программировании, они, безусловно, могут быть полезны в определенных обстоятельствах.