The Wonderful Symbol
What is the Symbol?
The symbol is a neat new data type of ES2015. It provides a new way to create unique identifiers in JAVASCRIPT.
How do symbols Work?
ES2015 has a factory function which creates a new symbol.
const mySymbol = Symbol();
// We can also give a string value to the factory function.
const mySymbolWithContent = Symbol(`nameKey`);
The difference between the two call ons below is the key. A key is an optional parameter which helps to find a symbol.
const s1 = Symbol(`symbol001`);
const s2 = Symbol(`symbol002`);
Symbol.for(`symbol001`); // output: Symbol(`symbol001`)
We can see that the Symbol object is able to find a Symbol instance by specifying a particular key.
Symbols are Always Unique
The browser JS engine registers all symbols and always creates a new one when the Symbol() function is called, even if they have the same key. If we compare two symbols, they won’t be equal.
const s3 = Symbol(`test`);
const s4 = Symbol(`test`);
s3 == s4 // output: false
Use Cases
Unique Object Key
Developers get confused when they have to name 100’s of variables in a day, but there’s an easy way to do that:
const writer = {};
const nameKey = Symbol(`key-for-name`);
writer[nameKey] = `Jack London`;
Create Hidden Properties
The for...in
cycle and Object.keys
method don’t see properties.
Why? Because the property names created by a Symbol function are not a string. So, we can use symbols for hidden properties.
Object.keys(writer) // output: []
You start to use the Symbol function today ;)