JavaScript Internals (521 Qs)•Part 8: Modern JavaScript APIs, WeakRef, Proxy & Performance (464 - 521)
What are Symbols and what are their use cases?
Symbol is a primitive data type introduced in ES6 that creates unique and immutable values. Each Symbol value is guaranteed to be unique, even if they have the same description.
javascript
const sym1 = Symbol('description');
const sym2 = Symbol('description');
console.log(sym1 === sym2); // false
Common use cases:
- Creating unique property keys:
javascript
const id = Symbol('id');
const obj = {
[id]: 12345,
name: 'John'
};
console.log(obj[id]); // 12345
- Preventing property name collisions:
javascript
const myLib = {
[Symbol('internal')]: 'private data',
publicMethod() {}
};
- Implementing well-known symbols (Symbol.iterator, Symbol.toStringTag, etc.):
javascript
class Collection {
*[Symbol.iterator]() {
yield 1;
yield 2;
}
}
Note: Symbol properties are not enumerable in for...in loops or Object.keys(), making them useful for metadata and internal object properties.